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

Paper Changes:
b75eeca0 Boost light task priority to ensure it doesnt hold up chunk loads
3d2bc848 Ensure VillagerTrades doesn't load async - fixes #3495
e470f1ef Add more information to Timing Reports
f4a47db6 Improve Thread Pool usage to allow single threads for single cpu servers
a4fe910f Fix sounds when using worldedit regen command
70ad51a8 Updated Upstream (Bukkit/CraftBukkit)
d7cfa4fa Improve legacy format serialization more
2020-06-05 21:42:48 -05:00

93 lines
5.1 KiB
Diff

From db97b9b5b03450f6ab223ddd1db35fc85bdcf914 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