implement bat properties

This commit is contained in:
Pyrbu 2023-08-07 21:47:10 +02:00
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));