implemented Goat properties

This commit is contained in:
D3v1s0m 2023-07-05 19:48:50 +05:30
parent 959f6241f4
commit ee30c7dd18
No known key found for this signature in database
GPG Key ID: 3B6EC35367B8D82E
6 changed files with 32 additions and 3 deletions

@ -209,8 +209,8 @@ public class EntityPropertyRegistryImpl implements EntityPropertyRegistry {
registerType("piglin_charging_crossbow", false); // TODO registerType("piglin_charging_crossbow", false); // TODO
// Goat // Goat
registerType("has_left_horn", true); // TODO registerType("has_left_horn", true);
registerType("has_right_horn", true); // TODO registerType("has_right_horn", true);
// Vindicator // Vindicator
registerType("celebrating", false); // TODO registerType("celebrating", false); // TODO

@ -87,6 +87,10 @@ public interface MetadataFactory {
// Ghast // Ghast
EntityData ghastAttacking(boolean attacking); EntityData ghastAttacking(boolean attacking);
// Goat
EntityData goatHasLeftHorn(boolean hasLeftHorn);
EntityData goatHasRightHorn(boolean hasRightHorn);
// Villager // Villager
EntityData villagerData(int type, int profession, int level); EntityData villagerData(int type, int profession, int level);
} }

@ -180,6 +180,16 @@ public class V1_17MetadataFactory extends V1_16MetadataFactory {
return newEntityData(16, EntityDataTypes.BOOLEAN, attacking); return newEntityData(16, EntityDataTypes.BOOLEAN, attacking);
} }
@Override
public EntityData goatHasLeftHorn(boolean hasLeftHorn) {
return newEntityData(18, EntityDataTypes.BOOLEAN, hasLeftHorn);
}
@Override
public EntityData goatHasRightHorn(boolean hasRightHorn) {
return newEntityData(19, EntityDataTypes.BOOLEAN, hasRightHorn);
}
@Override @Override
public EntityData villagerData(int type, int profession, int level) { public EntityData villagerData(int type, int profession, int level) {
return newEntityData(18, EntityDataTypes.VILLAGER_DATA, new VillagerData(type, profession, level)); return newEntityData(18, EntityDataTypes.VILLAGER_DATA, new VillagerData(type, profession, level));

@ -205,6 +205,16 @@ public class V1_8MetadataFactory implements MetadataFactory {
return newEntityData(16, EntityDataTypes.BYTE, (byte) (attacking ? 1 : 0)); return newEntityData(16, EntityDataTypes.BYTE, (byte) (attacking ? 1 : 0));
} }
@Override
public EntityData goatHasLeftHorn(boolean hasLeftHorn) {
throw new UnsupportedOperationException("The goat horn entity data isn't supported on this version");
}
@Override
public EntityData goatHasRightHorn(boolean hasRightHorn) {
throw new UnsupportedOperationException("The goat horn entity data isn't supported on this version");
}
@Override @Override
public EntityData villagerData(int type, int profession, int level) { public EntityData villagerData(int type, int profession, int level) {
return newEntityData(16, EntityDataTypes.INT, profession); return newEntityData(16, EntityDataTypes.INT, profession);

@ -308,7 +308,8 @@ public class NpcTypeRegistryImpl implements NpcTypeRegistry {
.setHologramOffset(-1.175)); .setHologramOffset(-1.175));
register(builder(p, "goat", EntityTypes.GOAT) register(builder(p, "goat", EntityTypes.GOAT)
.setHologramOffset(-0.675)); .setHologramOffset(-0.675)
.addProperties("has_left_horn", "has_right_horn"));
if (!version.isNewerThanOrEquals(ServerVersion.V_1_19)) return; if (!version.isNewerThanOrEquals(ServerVersion.V_1_19)) return;

@ -217,6 +217,10 @@ public class V1_8PacketFactory implements PacketFactory {
else if (entity.getType().equals(EntityTypes.GHAST)) { else if (entity.getType().equals(EntityTypes.GHAST)) {
add(data, metadataFactory.ghastAttacking(properties.getProperty(propertyRegistry.getByName("attacking", Boolean.class)))); add(data, metadataFactory.ghastAttacking(properties.getProperty(propertyRegistry.getByName("attacking", Boolean.class))));
} }
else if (entity.getType().equals(EntityTypes.GOAT)) {
add(data, metadataFactory.goatHasLeftHorn(properties.getProperty(propertyRegistry.getByName("has_left_horn", Boolean.class))));
add(data, metadataFactory.goatHasRightHorn(properties.getProperty(propertyRegistry.getByName("has_right_horn", Boolean.class))));
}
else if (entity.getType().equals(EntityTypes.VILLAGER)) { else if (entity.getType().equals(EntityTypes.VILLAGER)) {
VillagerProfession profession = properties.getProperty(propertyRegistry.getByName("villager_profession", VillagerProfession.class)); VillagerProfession profession = properties.getProperty(propertyRegistry.getByName("villager_profession", VillagerProfession.class));
int professionId = profession.ordinal(); int professionId = profession.ordinal();