Files
Purpur/patches/server/0083-Allow-leashing-villagers.patch
William Blake Galbreath c2c6a6efd9 Updated Upstream (Paper)
Upstream has released updates that appears to apply and compile correctly

Paper Changes:
d6eda567 Provide a useful PluginClassLoader#toString
a3fdafbd Restore Serialization Improvements again, wasn't an issue.
0e441c79 Revert "Improve Chat Component Legacy Serialization more"
53ef67b8 Improve Chat Component Legacy Serialization more
afc1fcfc Fix serialization of colors from components
eaa76a31 Add Villager Tasks to EAR inactive tick to keep behavior
357b52fd Improve Chunk Prioritization / Load Order
a76bc402 Improve Chunk Status Transition Speed
7a2b345b Synchronize DataPaletteBlock instead of ReentrantLock
2020-05-31 18:20:17 -05:00

93 lines
5.1 KiB
Diff

From 14aebd18444a594133cc91ef49ff872e8134bcc4 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <blake.galbreath@gmail.com>
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 +++++++
.../java/net/minecraft/server/EntityVillagerTrader.java | 7 +++++++
src/main/java/net/pl3x/purpur/PurpurWorldConfig.java | 4 ++++
4 files changed, 19 insertions(+)
diff --git a/src/main/java/net/minecraft/server/EntityInsentient.java b/src/main/java/net/minecraft/server/EntityInsentient.java
index bf9d044b0b..3adc3434e1 100644
--- a/src/main/java/net/minecraft/server/EntityInsentient.java
+++ b/src/main/java/net/minecraft/server/EntityInsentient.java
@@ -1062,6 +1062,7 @@ public abstract class EntityInsentient extends EntityLiving {
if (!this.isAlive()) {
return false;
} else if (this.getLeashHolder() == entityhuman) {
+ if (enumhand == EnumHand.OFF_HAND && (world.purpurConfig.villagerCanBeLeashed || world.purpurConfig.villagerTraderCanBeLeashed) && this instanceof EntityVillagerAbstract) 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 a30ac7cc0b..e3322fedd7 100644
--- a/src/main/java/net/minecraft/server/EntityVillager.java
+++ b/src/main/java/net/minecraft/server/EntityVillager.java
@@ -1031,4 +1031,11 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation
this.bL = restocksToday;
}
// Paper end
+
+ // Purpur - start
+ @Override
+ public boolean a(EntityHuman entityhuman) {
+ return world.purpurConfig.villagerCanBeLeashed && !this.isLeashed();
+ }
+ // Purpur - end
}
diff --git a/src/main/java/net/minecraft/server/EntityVillagerTrader.java b/src/main/java/net/minecraft/server/EntityVillagerTrader.java
index 14ca5fc367..427c589075 100644
--- a/src/main/java/net/minecraft/server/EntityVillagerTrader.java
+++ b/src/main/java/net/minecraft/server/EntityVillagerTrader.java
@@ -283,4 +283,11 @@ public class EntityVillagerTrader extends EntityVillagerAbstract {
return !blockposition.a((IPosition) this.a.getPositionVector(), d0);
}
}
+
+ // Purpur - start
+ @Override
+ public boolean a(EntityHuman entityhuman) {
+ return world.purpurConfig.villagerTraderCanBeLeashed && !this.isLeashed();
+ }
+ // Purpur - end
}
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
index caf7f0e84f..284054db42 100644
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
@@ -780,6 +780,7 @@ public class PurpurWorldConfig {
public int villagerBrainTicks = 1;
public boolean villagerUseBrainTicksOnlyWhenLagging = true;
public boolean villagerFollowEmeraldBlock = false;
+ public boolean villagerCanBeLeashed = false;
private void villagerSettings() {
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
@@ -787,17 +788,20 @@ public class PurpurWorldConfig {
villagerBrainTicks = getInt("mobs.villager.brain-ticks", villagerBrainTicks);
villagerUseBrainTicksOnlyWhenLagging = getBoolean("mobs.villager.use-brain-ticks-only-when-lagging", villagerUseBrainTicksOnlyWhenLagging);
villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock);
+ villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed);
}
public boolean villagerTraderRidable = false;
public boolean villagerTraderRidableInWater = false;
public boolean villagerTraderRequireShiftToMount = true;
public boolean villagerTraderFollowEmeraldBlock = false;
+ public boolean villagerTraderCanBeLeashed = false;
private void villagerTraderSettings() {
villagerTraderRidable = getBoolean("mobs.wandering_trader.ridable", villagerTraderRidable);
villagerTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", villagerTraderRidableInWater);
villagerTraderRequireShiftToMount = getBoolean("mobs.wandering_trader.require-shift-to-mount", villagerTraderRequireShiftToMount);
villagerTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", villagerTraderFollowEmeraldBlock);
+ villagerTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", villagerTraderCanBeLeashed);
}
public boolean vindicatorRidable = false;
--
2.24.0