added size property for Slime, Magma Cube and Phantom

This commit is contained in:
D3v1s0m 2023-09-10 17:20:40 +05:30
parent 2c601c450d
commit f28de908da
No known key found for this signature in database
GPG Key ID: FA1F770C7B1D40C1
3 changed files with 23 additions and 4 deletions

@ -149,8 +149,6 @@ public class EntityPropertyRegistryImpl implements EntityPropertyRegistry {
// Phantom // Phantom
registerType("phantom_size", 0); // TODO registerType("phantom_size", 0); // TODO
// Slime
registerType("slime_size", 0); // TODO
*/ */
} }
@ -331,6 +329,16 @@ public class EntityPropertyRegistryImpl implements EntityPropertyRegistry {
linkProperties("is_saddled", "is_eating", "is_rearing", "has_mouth_open"); linkProperties("is_saddled", "is_eating", "is_rearing", "has_mouth_open");
} }
// Slime and Magma Cube
int sizeIndex;
if (ver.isNewerThanOrEquals(ServerVersion.V_1_17)) sizeIndex = 16;
else if (ver.isNewerThanOrEquals(ServerVersion.V_1_15)) sizeIndex = 15;
else if (ver.isNewerThanOrEquals(ServerVersion.V_1_14)) sizeIndex = 14;
else if (ver.isNewerThanOrEquals(ServerVersion.V_1_10)) sizeIndex = 12;
else if (ver.isNewerThanOrEquals(ServerVersion.V_1_9)) sizeIndex = 11;
else sizeIndex = 16;
register(new IntegerProperty("size", sizeIndex, 1, v1_8));
if (!ver.isNewerThanOrEquals(ServerVersion.V_1_11)) return; if (!ver.isNewerThanOrEquals(ServerVersion.V_1_11)) return;
// Spellcaster Illager // Spellcaster Illager
int spellIndex = 12; int spellIndex = 12;

@ -10,14 +10,22 @@ import java.util.Map;
public class IntegerProperty extends EntityPropertyImpl<Integer> { public class IntegerProperty extends EntityPropertyImpl<Integer> {
private final int index; private final int index;
private final boolean legacy;
protected IntegerProperty(String name, int index, Integer defaultValue) { public IntegerProperty(String name, int index, Integer defaultValue) {
this(name, index, defaultValue, false);
}
public IntegerProperty(String name, int index, Integer defaultValue, boolean legacy) {
super(name, defaultValue, Integer.class); super(name, defaultValue, Integer.class);
this.index = index; this.index = index;
this.legacy = legacy;
} }
@Override @Override
public void apply(Player player, PacketEntity entity, boolean isSpawned, Map<Integer, EntityData> properties) { public void apply(Player player, PacketEntity entity, boolean isSpawned, Map<Integer, EntityData> properties) {
properties.put(index, newEntityData(index, EntityDataTypes.INT, entity.getProperty(this))); properties.put(index, legacy ?
newEntityData(index, EntityDataTypes.BYTE, (byte) entity.getProperty(this).intValue()) :
newEntityData(index, EntityDataTypes.INT, entity.getProperty(this)));
} }
} }

@ -135,6 +135,9 @@ public class NpcTypeImpl implements NpcType {
if (EntityTypes.isTypeInstanceOf(type, EntityTypes.ABSTRACT_PIGLIN)) { if (EntityTypes.isTypeInstanceOf(type, EntityTypes.ABSTRACT_PIGLIN)) {
addProperties("piglin_immune_to_zombification"); addProperties("piglin_immune_to_zombification");
} }
if (EntityTypes.isTypeInstanceOf(type, EntityTypes.SLIME) || EntityTypes.isTypeInstanceOf(type, EntityTypes.PHANTOM)) {
addProperties("size");
}
return new NpcTypeImpl(name, type, hologramOffset, new HashSet<>(allowedProperties), defaultProperties); return new NpcTypeImpl(name, type, hologramOffset, new HashSet<>(allowedProperties), defaultProperties);
} }
} }