diff --git a/.gitignore b/.gitignore index 696e44329..9820ac669 100644 --- a/.gitignore +++ b/.gitignore @@ -51,6 +51,7 @@ manifest.mf # other stuff run/ +build-data/ Purpur-API Purpur-MojangAPI Purpur-Server diff --git a/build-data/mcdev-imports.txt b/build-data/mcdev-imports.txt index 103006860..6f0ec2fe8 100644 --- a/build-data/mcdev-imports.txt +++ b/build-data/mcdev-imports.txt @@ -2,5 +2,3 @@ # both fully qualified and a file based syntax are accepted here: # net.minecraft.world.level.entity.LevelEntityGetterAdapter # net/minecraft/world/level/entity/LevelEntityGetter.java -net.minecraft.advancements.DisplayInfo -net.minecraft.advancements.FrameType diff --git a/patches/server-unmapped/0007-Llama-API.patch b/patches/server-unmapped/0007-Llama-API.patch deleted file mode 100644 index dd9d6492c..000000000 --- a/patches/server-unmapped/0007-Llama-API.patch +++ /dev/null @@ -1,156 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: William Blake Galbreath -Date: Fri, 18 Oct 2019 22:50:12 -0500 -Subject: [PATCH] Llama API - - -diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/PathfinderGoalLlamaFollow.java b/src/main/java/net/minecraft/world/entity/ai/goal/PathfinderGoalLlamaFollow.java -index 4fd1744f13b87c79ae3f46b28a56daeaba343aa6..34a854131dd939693a6df4d52103714ebe373dc3 100644 ---- a/src/main/java/net/minecraft/world/entity/ai/goal/PathfinderGoalLlamaFollow.java -+++ b/src/main/java/net/minecraft/world/entity/ai/goal/PathfinderGoalLlamaFollow.java -@@ -11,7 +11,7 @@ import net.minecraft.world.phys.Vec3D; - - 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; - -@@ -23,6 +23,7 @@ public class PathfinderGoalLlamaFollow extends PathfinderGoal { - - @Override - public boolean a() { -+ if (!getLlama().shouldJoinCaravan) return false; // Purpur - if (!this.a.isLeashed() && !this.a.fC()) { - List list = this.a.world.getEntities(this.a, this.a.getBoundingBox().grow(9.0D, 4.0D, 9.0D), (entity) -> { - EntityTypes entitytypes = entity.getEntityType(); -@@ -82,6 +83,7 @@ public class PathfinderGoalLlamaFollow extends PathfinderGoal { - - @Override - public boolean b() { -+ if (!getLlama().shouldJoinCaravan) return false; // Purpur - if (this.a.fC() && this.a.fD().isAlive() && this.a(this.a, 0)) { - double d0 = this.a.h((Entity) this.a.fD()); - -diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/EntityLlama.java b/src/main/java/net/minecraft/world/entity/animal/horse/EntityLlama.java -index 2005cb484ba6b5929ad81d3d120521f247f3d4cf..1c6435bf2cd870b795f87368057d8dfc1e1c938a 100644 ---- a/src/main/java/net/minecraft/world/entity/animal/horse/EntityLlama.java -+++ b/src/main/java/net/minecraft/world/entity/animal/horse/EntityLlama.java -@@ -63,7 +63,8 @@ public class EntityLlama extends EntityHorseChestedAbstract implements IRangedEn - @Nullable - private EntityLlama bB; - @Nullable -- private EntityLlama bC; -+ private EntityLlama bC; public EntityLlama getCaravanTail() { return bC; } // Purpur - OBFHELPER -+ public boolean shouldJoinCaravan = true; // Purpur - - public EntityLlama(EntityTypes entitytypes, World world) { - super(entitytypes, world); -@@ -92,6 +93,7 @@ public class EntityLlama extends EntityHorseChestedAbstract implements IRangedEn - nbttagcompound.set("DecorItem", this.inventoryChest.getItem(1).save(new NBTTagCompound())); - } - -+ nbttagcompound.setBoolean("Purpur.ShouldJoinCaravan", shouldJoinCaravan); // Purpur - } - - @Override -@@ -103,6 +105,11 @@ public class EntityLlama extends EntityHorseChestedAbstract implements IRangedEn - this.inventoryChest.setItem(1, ItemStack.a(nbttagcompound.getCompound("DecorItem"))); - } - -+ // Purpur start -+ if (nbttagcompound.hasKey("Purpur.ShouldJoinCaravan")) { -+ nbttagcompound.setBoolean("Purpur.ShouldJoinCaravan", shouldJoinCaravan); -+ } -+ // Purpur end - this.fe(); - } - -@@ -437,19 +444,24 @@ public class EntityLlama extends EntityHorseChestedAbstract implements IRangedEn - } - } - -+ public void leaveCaravan() { fA(); } // Purpur - OBFHELPER - public void fA() { - if (this.bB != null) { -+ new net.pl3x.purpur.event.entity.LlamaLeaveCaravanEvent((org.bukkit.entity.Llama) getBukkitEntity()).callEvent(); // Purpur - this.bB.bC = null; - } - - this.bB = 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.bB = entityllama; - this.bB.bC = this; - } - -+ public boolean hasCaravanTail() { return fB(); } // Purpur - OBFHELPER - public boolean fB() { - return this.bC != null; - } -@@ -460,7 +472,7 @@ public class EntityLlama extends EntityHorseChestedAbstract implements IRangedEn - } - - @Nullable -- public EntityLlama fD() { -+ public EntityLlama fD() { return getCaravanHead(); } public EntityLlama getCaravanHead() { // Purpur - OBFHELPER - return this.bB; - } - -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java -index 818034c62893a71808e3af0aa33393605611acdd..71536b6ae6a423e33667efcf584a0020f36fb189 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java -@@ -66,4 +66,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 - } diff --git a/patches/server/0006-Llama-API.patch b/patches/server/0006-Llama-API.patch new file mode 100644 index 000000000..54835c6f2 --- /dev/null +++ b/patches/server/0006-Llama-API.patch @@ -0,0 +1,141 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: William Blake Galbreath +Date: Fri, 18 Oct 2019 22:50:12 -0500 +Subject: [PATCH] Llama API + + +diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java +index e037d618955de9a213a9cd90752b29d189faace4..34dec0a94840a8865f1d80857ec54a1022ae5b84 100644 +--- a/src/main/java/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java ++++ b/src/main/java/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java +@@ -22,6 +22,7 @@ public class LlamaFollowCaravanGoal extends Goal { + + @Override + public boolean canUse() { ++ if (!this.llama.shouldJoinCaravan) return false; // Purpur + if (!this.llama.isLeashed() && !this.llama.inCaravan()) { + List list = this.llama.level.getEntities(this.llama, this.llama.getBoundingBox().inflate(9.0D, 4.0D, 9.0D), (entity) -> { + EntityType entityType = entity.getType(); +@@ -71,6 +72,7 @@ public class LlamaFollowCaravanGoal extends Goal { + + @Override + public boolean canContinueToUse() { ++ if (!this.llama.shouldJoinCaravan) return false; // Purpur + if (this.llama.inCaravan() && this.llama.getCaravanHead().isAlive() && this.firstIsLeashed(this.llama, 0)) { + double d = this.llama.distanceToSqr(this.llama.getCaravanHead()); + if (d > 676.0D) { +diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java +index 5c31519193126b715105e1e83bb54f6a1681d19e..41b94ea6f3cc71b3521df8be15bf009404ce66d2 100644 +--- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java ++++ b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java +@@ -65,6 +65,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { + private Llama caravanHead; + @Nullable + private Llama caravanTail; ++ public boolean shouldJoinCaravan = true; // Purpur + + public Llama(EntityType type, Level world) { + super(type, world); +@@ -95,7 +96,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { + if (!this.inventory.getItem(1).isEmpty()) { + nbt.put("DecorItem", this.inventory.getItem(1).save(new CompoundTag())); + } +- ++ nbt.putBoolean("Purpur.ShouldJoinCaravan", shouldJoinCaravan); // Purpur + } + + @Override +@@ -107,6 +108,12 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { + this.inventory.setItem(1, ItemStack.of(nbt.getCompound("DecorItem"))); + } + ++ // Purpur start ++ if (nbt.contains("Purpur.ShouldJoinCaravan")) { ++ this.shouldJoinCaravan = nbt.getBoolean("Purpur.ShouldJoinCaravan"); ++ } ++ // Purpur end ++ + this.updateContainerEquipment(); + } + +@@ -426,6 +433,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { + + public void leaveCaravan() { + if (this.caravanHead != null) { ++ new net.pl3x.purpur.event.entity.LlamaLeaveCaravanEvent((org.bukkit.entity.Llama) getBukkitEntity()).callEvent(); // Purpur + this.caravanHead.caravanTail = null; + } + +@@ -433,6 +441,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { + } + + public void joinCaravan(Llama llama) { ++ if (!shouldJoinCaravan || !new net.pl3x.purpur.event.entity.LlamaJoinCaravanEvent((org.bukkit.entity.Llama) getBukkitEntity(), (org.bukkit.entity.Llama) llama.getBukkitEntity()).callEvent()) return; // Purpur + this.caravanHead = llama; + this.caravanHead.caravanTail = this; + } +@@ -450,6 +459,13 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { + return this.caravanHead; + } + ++ // Purpur start ++ @Nullable ++ public Llama getCaravanTail() { ++ return this.caravanTail; ++ } ++ // Purpur end ++ + @Override + protected double followLeashSpeed() { + return 2.0D; +diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java +index 6ad12711a82d7be42ba41c0428779f86536fd900..4dd47cac823a63056985079e75588dd3d81f0af4 100644 +--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java ++++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java +@@ -64,4 +64,46 @@ public class CraftLlama extends CraftChestedHorse implements Llama, com.destroys + 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(@org.jetbrains.annotations.NotNull Llama llama) { ++ 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 + }