Files
Purpur/patches/server/0082-Villagers-follow-emerald-blocks.patch
William Blake Galbreath 18ebfc0366 Update to 1.15
2019-12-13 15:11:37 -06:00

59 lines
3.2 KiB
Diff

From 0a7cb9e8304d9aebdda3063c6d1076a25e804bce Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
Date: Fri, 29 Nov 2019 22:10:12 -0600
Subject: [PATCH] Villagers follow emerald blocks
---
src/main/java/net/minecraft/server/EntityVillager.java | 10 ++++++++++
src/main/java/net/pl3x/purpur/PurpurConfig.java | 2 ++
2 files changed, 12 insertions(+)
diff --git a/src/main/java/net/minecraft/server/EntityVillager.java b/src/main/java/net/minecraft/server/EntityVillager.java
index 8b036c3b53..22b6e02895 100644
--- a/src/main/java/net/minecraft/server/EntityVillager.java
+++ b/src/main/java/net/minecraft/server/EntityVillager.java
@@ -29,6 +29,7 @@ import org.bukkit.event.entity.VillagerReplenishTradeEvent;
public class EntityVillager extends EntityVillagerAbstract implements ReputationHandler, VillagerDataHolder {
+ private static final RecipeItemStack TEMPT_ITEMS = RecipeItemStack.a(Blocks.EMERALD_BLOCK.getItem()); // Purpur
private static final DataWatcherObject<VillagerData> bz = DataWatcher.a(EntityVillager.class, DataWatcherRegistry.q);
public static final Map<Item, Integer> bx = ImmutableMap.of(Items.BREAD, 4, Items.POTATO, 1, Items.CARROT, 1, Items.BEETROOT, 1);
private static final Set<Item> bA = ImmutableSet.of(Items.BREAD, Items.POTATO, Items.CARROT, Items.WHEAT, Items.WHEAT_SEEDS, Items.BEETROOT, new Item[]{Items.BEETROOT_SEEDS});
@@ -70,6 +71,15 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation
brainTickOffset = getRandom().nextInt(100); // Purpur
}
+ // Purpur start
+ @Override
+ protected void initPathfinder() {
+ if (net.pl3x.purpur.PurpurConfig.villagersFollowEmeraldBlocks) {
+ this.goalSelector.a(3, new PathfinderGoalTempt(this, 1.0D, false, TEMPT_ITEMS));
+ }
+ }
+ // Purpur end
+
@Override
public BehaviorController<EntityVillager> getBehaviorController() {
return (BehaviorController<EntityVillager>) super.getBehaviorController(); // CraftBukkit - decompile error
diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java
index 68db82759d..4bf208b35c 100644
--- a/src/main/java/net/pl3x/purpur/PurpurConfig.java
+++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java
@@ -280,10 +280,12 @@ public class PurpurConfig {
public static boolean useVillagerBrainTicksOnlyWhenLagging = true;
public static int villagerBrainTicks = 20;
public static boolean allowLeashingVillagers = false;
+ public static boolean villagersFollowEmeraldBlocks = 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("settings.mobs.villager.allow-leashing", allowLeashingVillagers);
+ villagersFollowEmeraldBlocks = getBoolean("settings.mobs.villager.follow-emerald-blocks", villagersFollowEmeraldBlocks);
}
public static boolean zombieTargetsTurtleEggs = true;
--
2.24.0.rc1