From 3a6132197184ad41784cf25e8641f59c308f2a21 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Thu, 3 Oct 2019 18:35:38 -0500 Subject: [PATCH] Allow leashing villagers --- .../0064-Allow-leashing-villagers.patch | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 patches/server/0064-Allow-leashing-villagers.patch diff --git a/patches/server/0064-Allow-leashing-villagers.patch b/patches/server/0064-Allow-leashing-villagers.patch new file mode 100644 index 000000000..2ed4fcd07 --- /dev/null +++ b/patches/server/0064-Allow-leashing-villagers.patch @@ -0,0 +1,58 @@ +From b79259289d6aa07a6f9999672fb1633a8c7e9309 Mon Sep 17 00:00:00 2001 +From: William Blake Galbreath +Date: Thu, 3 Oct 2019 18:08:03 -0500 +Subject: [PATCH] Allow leashing villagers + +--- + src/main/java/net/minecraft/server/EntityInsentient.java | 1 + + src/main/java/net/minecraft/server/EntityVillager.java | 7 +++++++ + src/main/java/net/pl3x/purpur/PurpurConfig.java | 2 ++ + 3 files changed, 10 insertions(+) + +diff --git a/src/main/java/net/minecraft/server/EntityInsentient.java b/src/main/java/net/minecraft/server/EntityInsentient.java +index 610bf5458..996146f61 100644 +--- a/src/main/java/net/minecraft/server/EntityInsentient.java ++++ b/src/main/java/net/minecraft/server/EntityInsentient.java +@@ -1044,6 +1044,7 @@ public abstract class EntityInsentient extends EntityLiving { + if (!this.isAlive()) { + return false; + } else if (this.getLeashHolder() == entityhuman) { ++ if (net.pl3x.purpur.PurpurConfig.allowLeashingVillagers && enumhand == EnumHand.OFF_HAND && this instanceof EntityVillager) return true; // Purpur + // CraftBukkit start - fire PlayerUnleashEntityEvent + if (CraftEventFactory.callPlayerUnleashEntityEvent(this, entityhuman).isCancelled()) { + ((EntityPlayer) entityhuman).playerConnection.sendPacket(new PacketPlayOutAttachEntity(this, this.getLeashHolder())); +diff --git a/src/main/java/net/minecraft/server/EntityVillager.java b/src/main/java/net/minecraft/server/EntityVillager.java +index d1d62a900..2a848304d 100644 +--- a/src/main/java/net/minecraft/server/EntityVillager.java ++++ b/src/main/java/net/minecraft/server/EntityVillager.java +@@ -989,4 +989,11 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation + + return optional.isPresent() && optional1.isPresent() ? i - ((MinecraftSerializableLong) optional.get()).a() < 24000L && i - ((MinecraftSerializableLong) optional1.get()).a() < 36000L : false; + } ++ ++ // Purpur - start ++ @Override ++ public boolean a(EntityHuman entityhuman) { ++ return net.pl3x.purpur.PurpurConfig.allowLeashingVillagers && !this.isLeashed(); ++ } ++ // Purpur - end + } +diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java +index e08f307c7..0ed0dc8ed 100644 +--- a/src/main/java/net/pl3x/purpur/PurpurConfig.java ++++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java +@@ -263,9 +263,11 @@ public class PurpurConfig { + + public static boolean useVillagerBrainTicksOnlyWhenLagging = true; + public static int villagerBrainTicks = 20; ++ public static boolean allowLeashingVillagers = false; + private static void villagerSettings() { + useVillagerBrainTicksOnlyWhenLagging = getBoolean("settings.mobs.villager.use-brain-ticks-only-when-lagging", useVillagerBrainTicksOnlyWhenLagging); + villagerBrainTicks = getInt("settings.mobs.villager.brain-ticks", villagerBrainTicks); ++ allowLeashingVillagers = getBoolean("allow-leashing-villagers", allowLeashingVillagers); + } + + public static boolean zombieTargetsTurtleEggs = true; +-- +2.23.0.rc1 +