added llama properties

This commit is contained in:
D3v1s0m 2023-09-10 16:45:39 +05:30
parent 81b087628b
commit 2c601c450d
No known key found for this signature in database
GPG Key ID: FA1F770C7B1D40C1
4 changed files with 24 additions and 10 deletions

@ -0,0 +1,8 @@
package lol.pyr.znpcsplus.util;
public enum LlamaVariant {
CREAMY,
WHITE,
BROWN,
GRAY
}

@ -270,6 +270,7 @@ public class ZNpcsPlus extends JavaPlugin {
registerEnumParser(manager, HorseStyle.class, incorrectUsageMessage); registerEnumParser(manager, HorseStyle.class, incorrectUsageMessage);
registerEnumParser(manager, HorseColor.class, incorrectUsageMessage); registerEnumParser(manager, HorseColor.class, incorrectUsageMessage);
registerEnumParser(manager, HorseArmor.class, incorrectUsageMessage); registerEnumParser(manager, HorseArmor.class, incorrectUsageMessage);
registerEnumParser(manager, LlamaVariant.class, incorrectUsageMessage);
manager.registerCommand("npc", new MultiCommand(loadHelpMessage("root")) manager.registerCommand("npc", new MultiCommand(loadHelpMessage("root"))
.addSubcommand("create", new CreateCommand(npcRegistry, typeRegistry)) .addSubcommand("create", new CreateCommand(npcRegistry, typeRegistry))

@ -63,6 +63,7 @@ public class EntityPropertyRegistryImpl implements EntityPropertyRegistry {
registerEnumSerializer(HorseColor.class); registerEnumSerializer(HorseColor.class);
registerEnumSerializer(HorseStyle.class); registerEnumSerializer(HorseStyle.class);
registerEnumSerializer(HorseArmor.class); registerEnumSerializer(HorseArmor.class);
registerEnumSerializer(LlamaVariant.class);
/* /*
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
@ -75,10 +76,6 @@ public class EntityPropertyRegistryImpl implements EntityPropertyRegistry {
registerType("beam_target", null); // TODO: Make a block pos class for this registerType("beam_target", null); // TODO: Make a block pos class for this
registerType("show_base", true); // TODO registerType("show_base", true); // TODO
// Creeper
registerType("creeper_state", CreeperState.IDLE);
registerType("creeper_charged", false);
// Enderman // Enderman
registerType("enderman_held_block", new BlockState(0)); // TODO: figure out the type on this registerType("enderman_held_block", new BlockState(0)); // TODO: figure out the type on this
registerType("enderman_screaming", false); // TODO registerType("enderman_screaming", false); // TODO
@ -96,10 +93,6 @@ public class EntityPropertyRegistryImpl implements EntityPropertyRegistry {
// Sniffer // Sniffer
registerType("sniffer_state", null); // TODO: Nothing on wiki.vg, look in mc source registerType("sniffer_state", null); // TODO: Nothing on wiki.vg, look in mc source
// LLama
registerType("carpet_color", DyeColor.class); // TODO
registerType("llama_variant", 0); // TODO
// Panda // Panda
registerType("panda_sneezing", false); // TODO registerType("panda_sneezing", false); // TODO
registerType("panda_rolling", false); // TODO registerType("panda_rolling", false); // TODO
@ -347,6 +340,16 @@ public class EntityPropertyRegistryImpl implements EntityPropertyRegistry {
else if (ver.isNewerThanOrEquals(ServerVersion.V_1_12)) spellIndex = 13; else if (ver.isNewerThanOrEquals(ServerVersion.V_1_12)) spellIndex = 13;
register(new EncodedByteProperty<>("spell", SpellType.NONE, spellIndex, obj -> (byte) Math.min(obj.ordinal(), ver.isOlderThan(ServerVersion.V_1_13) ? 3 : 5))); register(new EncodedByteProperty<>("spell", SpellType.NONE, spellIndex, obj -> (byte) Math.min(obj.ordinal(), ver.isOlderThan(ServerVersion.V_1_13) ? 3 : 5)));
// Llama
int llamaIndex;
if (ver.isNewerThanOrEquals(ServerVersion.V_1_18)) llamaIndex = 20;
else if (ver.isNewerThanOrEquals(ServerVersion.V_1_17)) llamaIndex = 21;
else if (ver.isNewerThanOrEquals(ServerVersion.V_1_15)) llamaIndex = 20;
else if (ver.isNewerThanOrEquals(ServerVersion.V_1_14)) llamaIndex = 19;
else llamaIndex = 17;
register(new EncodedIntegerProperty<DyeColor>("carpet_color", DyeColor.class, llamaIndex++, obj -> obj == null ? -1 : obj.ordinal()));
register(new EncodedIntegerProperty<>("llama_variant", LlamaVariant.CREAMY, llamaIndex, Enum::ordinal));
if (!ver.isNewerThanOrEquals(ServerVersion.V_1_14)) return; if (!ver.isNewerThanOrEquals(ServerVersion.V_1_14)) return;
// Pose // Pose
register(new NpcPoseProperty()); register(new NpcPoseProperty());

@ -202,7 +202,8 @@ public class NpcTypeRegistryImpl implements NpcTypeRegistry {
.addProperties("evoker_spell")); .addProperties("evoker_spell"));
register(builder(p, "llama", EntityTypes.LLAMA) register(builder(p, "llama", EntityTypes.LLAMA)
.setHologramOffset(-0.105)); .setHologramOffset(-0.105)
.addProperties("carpet_color", "llama_variant"));
register(builder(p, "vex", EntityTypes.VEX) register(builder(p, "vex", EntityTypes.VEX)
.setHologramOffset(-1.175) .setHologramOffset(-1.175)
@ -276,7 +277,8 @@ public class NpcTypeRegistryImpl implements NpcTypeRegistry {
.setHologramOffset(0.225)); .setHologramOffset(0.225));
register(builder(p, "trader_llama", EntityTypes.TRADER_LLAMA) register(builder(p, "trader_llama", EntityTypes.TRADER_LLAMA)
.setHologramOffset(-0.105)); .setHologramOffset(-0.105)
.addProperties("llama_variant"));
register(builder(p, "wandering_trader", EntityTypes.WANDERING_TRADER) register(builder(p, "wandering_trader", EntityTypes.WANDERING_TRADER)
.setHologramOffset(-0.025) .setHologramOffset(-0.025)