From 0eb1d9482de3f315ebead0cac4ae90b1b152ca03 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Fri, 18 Oct 2019 22:50:12 -0500 Subject: [PATCH] Add more llama API --- .../net/minecraft/server/EntityLlama.java | 19 +++++--- .../minecraft/server/EntityLlamaTrader.java | 4 +- .../server/PathfinderGoalLlamaFollow.java | 4 +- .../bukkit/craftbukkit/entity/CraftLlama.java | 44 +++++++++++++++++++ 4 files changed, 63 insertions(+), 8 deletions(-) diff --git a/src/main/java/net/minecraft/server/EntityLlama.java b/src/main/java/net/minecraft/server/EntityLlama.java index ec0f57d90..c9d8a4e13 100644 --- a/src/main/java/net/minecraft/server/EntityLlama.java +++ b/src/main/java/net/minecraft/server/EntityLlama.java @@ -12,7 +12,8 @@ public class EntityLlama extends EntityHorseChestedAbstract implements IRangedEn @Nullable private EntityLlama bJ; @Nullable - private EntityLlama bK; + private EntityLlama bK; @Nullable public EntityLlama getCaravanTail() { return bK; } // Purpur - OBFHELPER + public boolean shouldJoinCaravan = true; // Purpur public EntityLlama(EntityTypes entitytypes, World world) { super(entitytypes, world); @@ -63,7 +64,7 @@ public class EntityLlama extends EntityHorseChestedAbstract implements IRangedEn if (!this.inventoryChest.getItem(1).isEmpty()) { nbttagcompound.set("DecorItem", this.inventoryChest.getItem(1).save(new NBTTagCompound())); } - + nbttagcompound.setBoolean("Purpur.ShouldJoinCaravan", shouldJoinCaravan); // Purpur } @Override @@ -74,7 +75,11 @@ public class EntityLlama extends EntityHorseChestedAbstract implements IRangedEn if (nbttagcompound.hasKeyOfType("DecorItem", 10)) { this.inventoryChest.setItem(1, ItemStack.a(nbttagcompound.getCompound("DecorItem"))); } - + // Purpur start + if (nbttagcompound.hasKey("Purpur.ShouldJoinCaravan")) { + nbttagcompound.setBoolean("Purpur.ShouldJoinCaravan", shouldJoinCaravan); + } + // Purpur end this.eI(); } @@ -403,19 +408,24 @@ public class EntityLlama extends EntityHorseChestedAbstract implements IRangedEn } } + public void leaveCaravan() { fb(); } // Purpur - OBFHELPER public void fb() { if (this.bJ != null) { + new net.pl3x.purpur.event.entity.LlamaLeaveCaravanEvent((org.bukkit.entity.Llama) getBukkitEntity()).callEvent(); // Purpur this.bJ.bK = null; } this.bJ = null; } + public void joinCaravan(EntityLlama entitiyllama) { a(entitiyllama); } // Purpur - OBFHELPER public void a(EntityLlama entityllama) { + if (!shouldJoinCaravan || !new net.pl3x.purpur.event.entity.LlamaJoinCaravanEvent((org.bukkit.entity.Llama) getBukkitEntity(), (org.bukkit.entity.Llama) entityllama.getBukkitEntity()).callEvent()) return; // Purpur this.bJ = entityllama; this.bJ.bK = this; } + public boolean hasCaravanTail() { return fc(); } // Purpur - OBFHELPER public boolean fc() { return this.bK != null; } @@ -425,8 +435,7 @@ public class EntityLlama extends EntityHorseChestedAbstract implements IRangedEn return this.bJ != null; } - @Nullable - public EntityLlama fe() { + public EntityLlama getCaravanHead() { return fe(); } @Nullable public EntityLlama fe() { // Purpur - OBFHELPER return this.bJ; } diff --git a/src/main/java/net/minecraft/server/EntityLlamaTrader.java b/src/main/java/net/minecraft/server/EntityLlamaTrader.java index f8129ef10..c714b387c 100644 --- a/src/main/java/net/minecraft/server/EntityLlamaTrader.java +++ b/src/main/java/net/minecraft/server/EntityLlamaTrader.java @@ -81,8 +81,8 @@ public class EntityLlamaTrader extends EntityLlama { } // Purpur start - public boolean isSaddled() { return eq(); } // Purpur - OBFHELPER - @Override public boolean eq() { + public boolean isSaddled() { return eL(); } // Purpur - OBFHELPER + @Override public boolean eL() { return isTamed(); } // Purpur end diff --git a/src/main/java/net/minecraft/server/PathfinderGoalLlamaFollow.java b/src/main/java/net/minecraft/server/PathfinderGoalLlamaFollow.java index e181d8350..8376f1dc4 100644 --- a/src/main/java/net/minecraft/server/PathfinderGoalLlamaFollow.java +++ b/src/main/java/net/minecraft/server/PathfinderGoalLlamaFollow.java @@ -6,7 +6,7 @@ import java.util.List; public class PathfinderGoalLlamaFollow extends PathfinderGoal { - public final EntityLlama a; + public final EntityLlama a; public EntityLlama getLlama() { return a; } // Purpur private double b; private int c; @@ -18,6 +18,7 @@ public class PathfinderGoalLlamaFollow extends PathfinderGoal { @Override public boolean a() { + if (!getLlama().shouldJoinCaravan) return false; // Purpur if (!this.a.isLeashed() && !this.a.fd()) { List list = this.a.world.getEntities(this.a, this.a.getBoundingBox().grow(9.0D, 4.0D, 9.0D), (entity) -> { EntityTypes entitytypes = entity.getEntityType(); @@ -77,6 +78,7 @@ public class PathfinderGoalLlamaFollow extends PathfinderGoal { @Override public boolean b() { + if (!getLlama().shouldJoinCaravan) return false; // Purpur if (this.a.fd() && this.a.fe().isAlive() && this.a(this.a, 0)) { double d0 = this.a.h((Entity) this.a.fe()); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java index 3f94c5a92..a02763480 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java @@ -65,4 +65,48 @@ public class CraftLlama extends CraftChestedHorse implements Llama, CraftRangedE public EntityType getType() { return EntityType.LLAMA; } + + // Purpur start + @Override + public boolean shouldJoinCaravan() { + return getHandle().shouldJoinCaravan; + } + + @Override + public void setShouldJoinCaravan(boolean shouldJoinCaravan) { + getHandle().shouldJoinCaravan = shouldJoinCaravan; + } + + @Override + public boolean inCaravan() { + return getHandle().inCaravan(); + } + + @Override + public void joinCaravan(Llama llama) { + if (llama != null) { + getHandle().joinCaravan(((CraftLlama) llama).getHandle()); + } + } + + @Override + public void leaveCaravan() { + getHandle().leaveCaravan(); + } + + @Override + public boolean hasCaravanTail() { + return getHandle().hasCaravanTail(); + } + + @Override + public Llama getCaravanHead() { + return getHandle().getCaravanHead() == null ? null : (Llama) getHandle().getCaravanHead().getBukkitEntity(); + } + + @Override + public Llama getCaravanTail() { + return getHandle().getCaravanTail() == null ? null : (Llama) getHandle().getCaravanTail().getBukkitEntity(); + } + // Purpur end } -- 2.24.0