implement bat properties
This commit is contained in:
parent
ddabf9dc2c
commit
f2a4d51e28
9 changed files with 17 additions and 74 deletions
|
@ -60,7 +60,6 @@ public class EntityPropertyRegistryImpl implements EntityPropertyRegistry {
|
||||||
/*
|
/*
|
||||||
registerType("using_item", false); // TODO: fix it for 1.8 and add new property to use offhand item and riptide animation
|
registerType("using_item", false); // TODO: fix it for 1.8 and add new property to use offhand item and riptide animation
|
||||||
|
|
||||||
registerType("shaking", false);
|
|
||||||
registerType("baby", false); // TODO
|
registerType("baby", false); // TODO
|
||||||
registerType("pose", NpcPose.STANDING);
|
registerType("pose", NpcPose.STANDING);
|
||||||
|
|
||||||
|
@ -79,10 +78,6 @@ public class EntityPropertyRegistryImpl implements EntityPropertyRegistry {
|
||||||
// Bat
|
// Bat
|
||||||
registerType("hanging", false);
|
registerType("hanging", false);
|
||||||
|
|
||||||
// Bee
|
|
||||||
registerType("angry", false);
|
|
||||||
registerType("has_nectar", false);
|
|
||||||
|
|
||||||
// Blaze
|
// Blaze
|
||||||
registerType("blaze_on_fire", false);
|
registerType("blaze_on_fire", false);
|
||||||
|
|
||||||
|
@ -269,6 +264,16 @@ public class EntityPropertyRegistryImpl implements EntityPropertyRegistry {
|
||||||
else ghastAttackingIndex = 16;
|
else ghastAttackingIndex = 16;
|
||||||
register(new BooleanProperty("attacking", ghastAttackingIndex, false, legacyBooleans));
|
register(new BooleanProperty("attacking", ghastAttackingIndex, false, legacyBooleans));
|
||||||
|
|
||||||
|
// Bat
|
||||||
|
final int batIndex;
|
||||||
|
if (ver.isNewerThanOrEquals(ServerVersion.V_1_17)) batIndex = 16;
|
||||||
|
else if (ver.isNewerThanOrEquals(ServerVersion.V_1_15)) batIndex = 15;
|
||||||
|
else if (ver.isNewerThanOrEquals(ServerVersion.V_1_14)) batIndex = 14;
|
||||||
|
else if (ver.isNewerThanOrEquals(ServerVersion.V_1_10)) batIndex = 12;
|
||||||
|
else if (ver.isNewerThanOrEquals(ServerVersion.V_1_9)) batIndex = 11;
|
||||||
|
else batIndex = 16;
|
||||||
|
register(new BooleanProperty("hanging", batIndex, false, true /* This isnt a mistake */));
|
||||||
|
|
||||||
if (!ver.isNewerThanOrEquals(ServerVersion.V_1_14)) return;
|
if (!ver.isNewerThanOrEquals(ServerVersion.V_1_14)) return;
|
||||||
|
|
||||||
// Fox
|
// Fox
|
||||||
|
@ -287,6 +292,11 @@ public class EntityPropertyRegistryImpl implements EntityPropertyRegistry {
|
||||||
register(new BitsetProperty("fox_faceplanted", foxIndex, 0x40));
|
register(new BitsetProperty("fox_faceplanted", foxIndex, 0x40));
|
||||||
linkProperties("fox_sitting", "fox_crouching", "fox_sleeping", "fox_faceplanted");
|
linkProperties("fox_sitting", "fox_crouching", "fox_sleeping", "fox_faceplanted");
|
||||||
|
|
||||||
|
int beeIndex;
|
||||||
|
if (ver.isNewerThanOrEquals(ServerVersion.V_1_17)) beeIndex = 17;
|
||||||
|
else beeIndex = 18;
|
||||||
|
register(new BitsetProperty("has_nectar", beeIndex++, 0x08));
|
||||||
|
register(new EncodedIntegerProperty<>("angry", false, beeIndex, enabled -> enabled ? 1 : 0));
|
||||||
|
|
||||||
if (!ver.isNewerThanOrEquals(ServerVersion.V_1_17)) return;
|
if (!ver.isNewerThanOrEquals(ServerVersion.V_1_17)) return;
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@ public class BooleanProperty extends EntityPropertyImpl<Boolean> {
|
||||||
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) {
|
||||||
boolean enabled = entity.getProperty(this);
|
boolean enabled = entity.getProperty(this);
|
||||||
if (inverted) enabled = !enabled;
|
if (inverted) enabled = !enabled;
|
||||||
if (legacy) properties.put(index, new EntityData(index, EntityDataTypes.BYTE, (enabled ? 1 : 0)));
|
if (legacy) properties.put(index, newEntityData(index, EntityDataTypes.BYTE, (byte) (enabled ? 1 : 0)));
|
||||||
else properties.put(index, newEntityData(index, EntityDataTypes.BOOLEAN, enabled));
|
else properties.put(index, newEntityData(index, EntityDataTypes.BOOLEAN, enabled));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,13 +35,6 @@ public interface MetadataFactory {
|
||||||
EntityData axolotlVariant(int variant);
|
EntityData axolotlVariant(int variant);
|
||||||
EntityData playingDead(boolean playingDead);
|
EntityData playingDead(boolean playingDead);
|
||||||
|
|
||||||
// Bat
|
|
||||||
EntityData batHanging(boolean hanging);
|
|
||||||
|
|
||||||
// Bee
|
|
||||||
EntityData beeAngry(boolean angry);
|
|
||||||
EntityData beeHasNectar(boolean hasNectar);
|
|
||||||
|
|
||||||
// Blaze
|
// Blaze
|
||||||
EntityData blazeOnFire(boolean onFire);
|
EntityData blazeOnFire(boolean onFire);
|
||||||
|
|
||||||
|
|
|
@ -7,11 +7,6 @@ import lol.pyr.znpcsplus.util.CreeperState;
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public class V1_10MetadataFactory extends V1_9MetadataFactory {
|
public class V1_10MetadataFactory extends V1_9MetadataFactory {
|
||||||
|
|
||||||
@Override
|
|
||||||
public EntityData batHanging(boolean hanging) {
|
|
||||||
return newEntityData(12, EntityDataTypes.BYTE, (byte) (hanging ? 0x01 : 0));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public EntityData blazeOnFire(boolean onFire) {
|
public EntityData blazeOnFire(boolean onFire) {
|
||||||
return newEntityData(12, EntityDataTypes.BYTE, (byte) (onFire ? 0x01 : 0));
|
return newEntityData(12, EntityDataTypes.BYTE, (byte) (onFire ? 0x01 : 0));
|
||||||
|
|
|
@ -32,11 +32,6 @@ public class V1_14MetadataFactory extends V1_13MetadataFactory {
|
||||||
return createShoulderEntityRight(18, variant);
|
return createShoulderEntityRight(18, variant);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public EntityData batHanging(boolean hanging) {
|
|
||||||
return newEntityData(14, EntityDataTypes.BYTE, (byte) (hanging ? 0x01 : 0));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public EntityData blazeOnFire(boolean onFire) {
|
public EntityData blazeOnFire(boolean onFire) {
|
||||||
return newEntityData(14, EntityDataTypes.BYTE, (byte) (onFire ? 0x01 : 0));
|
return newEntityData(14, EntityDataTypes.BYTE, (byte) (onFire ? 0x01 : 0));
|
||||||
|
|
|
@ -20,21 +20,6 @@ public class V1_15MetadataFactory extends V1_14MetadataFactory {
|
||||||
return createShoulderEntityRight(19, variant);
|
return createShoulderEntityRight(19, variant);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public EntityData batHanging(boolean hanging) {
|
|
||||||
return newEntityData(15, EntityDataTypes.BYTE, (byte) (hanging ? 0x01 : 0));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public EntityData beeAngry(boolean angry) {
|
|
||||||
return newEntityData(17, EntityDataTypes.INT, angry ? 1 : 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public EntityData beeHasNectar(boolean hasNectar) {
|
|
||||||
return newEntityData(16, EntityDataTypes.BYTE, (byte) (hasNectar ? 0x08 : 0));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public EntityData blazeOnFire(boolean onFire) {
|
public EntityData blazeOnFire(boolean onFire) {
|
||||||
return newEntityData(15, EntityDataTypes.BYTE, (byte) (onFire ? 0x01 : 0));
|
return newEntityData(15, EntityDataTypes.BYTE, (byte) (onFire ? 0x01 : 0));
|
||||||
|
|
|
@ -36,21 +36,6 @@ public class V1_17MetadataFactory extends V1_16MetadataFactory {
|
||||||
return newEntityData(18, EntityDataTypes.BOOLEAN, playingDead);
|
return newEntityData(18, EntityDataTypes.BOOLEAN, playingDead);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public EntityData batHanging(boolean hanging) {
|
|
||||||
return newEntityData(16, EntityDataTypes.BYTE, (byte) (hanging ? 0x01 : 0));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public EntityData beeAngry(boolean angry) {
|
|
||||||
return newEntityData(18, EntityDataTypes.INT, angry ? 1 : 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public EntityData beeHasNectar(boolean hasNectar) {
|
|
||||||
return newEntityData(17, EntityDataTypes.BYTE, (byte) (hasNectar ? 0x08 : 0));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public EntityData blazeOnFire(boolean onFire) {
|
public EntityData blazeOnFire(boolean onFire) {
|
||||||
return newEntityData(16, EntityDataTypes.BYTE, (byte) (onFire ? 0x01 : 0));
|
return newEntityData(16, EntityDataTypes.BYTE, (byte) (onFire ? 0x01 : 0));
|
||||||
|
|
|
@ -40,21 +40,6 @@ public class V1_8MetadataFactory implements MetadataFactory {
|
||||||
throw new UnsupportedOperationException("The playing dead entity data isn't supported on this version");
|
throw new UnsupportedOperationException("The playing dead entity data isn't supported on this version");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public EntityData batHanging(boolean hanging) {
|
|
||||||
return newEntityData(16, EntityDataTypes.BYTE, (byte) (hanging ? 1 : 0));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public EntityData beeAngry(boolean angry) {
|
|
||||||
throw new UnsupportedOperationException("The bee properties entity data isn't supported on this version");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public EntityData beeHasNectar(boolean hasNectar) {
|
|
||||||
throw new UnsupportedOperationException("The bee properties entity data isn't supported on this version");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public EntityData blazeOnFire(boolean onFire) {
|
public EntityData blazeOnFire(boolean onFire) {
|
||||||
return newEntityData(16, EntityDataTypes.BYTE, (byte) (onFire ? 1 : 0));
|
return newEntityData(16, EntityDataTypes.BYTE, (byte) (onFire ? 1 : 0));
|
||||||
|
|
|
@ -7,11 +7,6 @@ import lol.pyr.znpcsplus.util.CreeperState;
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public class V1_9MetadataFactory extends V1_8MetadataFactory {
|
public class V1_9MetadataFactory extends V1_8MetadataFactory {
|
||||||
|
|
||||||
@Override
|
|
||||||
public EntityData batHanging(boolean hanging) {
|
|
||||||
return newEntityData(11, EntityDataTypes.BYTE, (byte) (hanging ? 0x01 : 0));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public EntityData blazeOnFire(boolean onFire) {
|
public EntityData blazeOnFire(boolean onFire) {
|
||||||
return newEntityData(16, EntityDataTypes.BYTE, (byte) (onFire ? 1 : 0));
|
return newEntityData(16, EntityDataTypes.BYTE, (byte) (onFire ? 1 : 0));
|
||||||
|
|
Loading…
Reference in a new issue