mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-18 08:57:44 +01:00
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
93 lines
5.1 KiB
Diff
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
|
|
|