mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-22 10:57:43 +01:00
another six
This commit is contained in:
@@ -1,35 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
|
||||
Date: Thu, 19 Mar 2020 19:39:34 -0500
|
||||
Subject: [PATCH] Add option to allow loyalty on tridents to work in the void
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/projectile/EntityThrownTrident.java b/src/main/java/net/minecraft/world/entity/projectile/EntityThrownTrident.java
|
||||
index 646043987e1102ae8e9becc9820e6c6d86ef844d..7aadfe6598f0d3d41b94cfc003fcc9d075ee6ae5 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/projectile/EntityThrownTrident.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/projectile/EntityThrownTrident.java
|
||||
@@ -60,7 +60,7 @@ public class EntityThrownTrident extends EntityArrow {
|
||||
|
||||
Entity entity = this.getShooter();
|
||||
|
||||
- if ((this.ai || this.t()) && entity != null) {
|
||||
+ if ((this.ai || this.t() || (world.purpurConfig.tridentLoyaltyVoidReturnHeight < 0.0D && locY() < world.purpurConfig.tridentLoyaltyVoidReturnHeight)) && entity != null) { // Purpur
|
||||
byte b0 = (Byte) this.datawatcher.get(EntityThrownTrident.g);
|
||||
|
||||
if (b0 > 0 && !this.z()) {
|
||||
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
index 6b65a81bc54cc7c795885cc860346d4a0ed64125..0a6255422a5d22e84cc1048caf7ca964a168b7fe 100644
|
||||
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
@@ -148,9 +148,11 @@ public class PurpurWorldConfig {
|
||||
|
||||
public boolean disableDropsOnCrammingDeath = false;
|
||||
public boolean milkCuresBadOmen = true;
|
||||
+ public double tridentLoyaltyVoidReturnHeight = 0.0D;
|
||||
private void miscGameplayMechanicsSettings() {
|
||||
disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath);
|
||||
milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen);
|
||||
+ tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight);
|
||||
}
|
||||
|
||||
public int playerSpawnInvulnerableTicks = 60;
|
||||
@@ -1,75 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
|
||||
Date: Sun, 26 Apr 2020 16:28:38 -0500
|
||||
Subject: [PATCH] Add enderman and creeper griefing controls
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/EntityCreeper.java b/src/main/java/net/minecraft/world/entity/monster/EntityCreeper.java
|
||||
index 63a6b1820f60db9eea49a3a589dd50ad25a3c0a2..09df2bd3b523072de0e9858e6e707e3721474422 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/EntityCreeper.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/EntityCreeper.java
|
||||
@@ -255,7 +255,7 @@ public class EntityCreeper extends EntityMonster {
|
||||
|
||||
public void explode() {
|
||||
if (!this.world.isClientSide) {
|
||||
- Explosion.Effect explosion_effect = this.world.getGameRules().getBoolean(GameRules.MOB_GRIEFING) ? Explosion.Effect.DESTROY : Explosion.Effect.NONE;
|
||||
+ Explosion.Effect explosion_effect = this.world.getGameRules().getBoolean(GameRules.MOB_GRIEFING) && world.purpurConfig.creeperAllowGriefing ? Explosion.Effect.DESTROY : Explosion.Effect.NONE; // Purpur
|
||||
float f = this.isPowered() ? 2.0F : 1.0F;
|
||||
|
||||
// CraftBukkit start
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/EntityEnderman.java b/src/main/java/net/minecraft/world/entity/monster/EntityEnderman.java
|
||||
index e993b1849beb60515c51ee4f37617faab63ca223..6a5593ff735a9e0486d7ed9b3afb4f44ad156b34 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/EntityEnderman.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/EntityEnderman.java
|
||||
@@ -423,6 +423,7 @@ public class EntityEnderman extends EntityMonster implements IEntityAngerable {
|
||||
|
||||
@Override
|
||||
public boolean a() {
|
||||
+ if (!enderman.world.purpurConfig.endermanAllowGriefing) return false; // Purpur
|
||||
return this.enderman.getCarried() != null ? false : (!this.enderman.world.getGameRules().getBoolean(GameRules.MOB_GRIEFING) ? false : this.enderman.getRandom().nextInt(20) == 0);
|
||||
}
|
||||
|
||||
@@ -456,7 +457,7 @@ public class EntityEnderman extends EntityMonster implements IEntityAngerable {
|
||||
|
||||
static class PathfinderGoalEndermanPlaceBlock extends PathfinderGoal {
|
||||
|
||||
- private final EntityEnderman a;
|
||||
+ private final EntityEnderman a; public EntityEnderman getEnderman() { return a; } // Purpur - OBFHELPER
|
||||
|
||||
public PathfinderGoalEndermanPlaceBlock(EntityEnderman entityenderman) {
|
||||
this.a = entityenderman;
|
||||
@@ -464,6 +465,7 @@ public class EntityEnderman extends EntityMonster implements IEntityAngerable {
|
||||
|
||||
@Override
|
||||
public boolean a() {
|
||||
+ if (!getEnderman().world.purpurConfig.endermanAllowGriefing) return false; // Purpur
|
||||
return this.a.getCarried() == null ? false : (!this.a.world.getGameRules().getBoolean(GameRules.MOB_GRIEFING) ? false : this.a.getRandom().nextInt(2000) == 0);
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
index 0a6255422a5d22e84cc1048caf7ca964a168b7fe..8033348257c0fcc6f3c1c376b6fb343c414618c5 100644
|
||||
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
@@ -225,8 +225,10 @@ public class PurpurWorldConfig {
|
||||
cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms);
|
||||
}
|
||||
|
||||
+ public boolean creeperAllowGriefing = true;
|
||||
public double creeperChargedChance = 0.0D;
|
||||
private void creeperSettings() {
|
||||
+ creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing);
|
||||
creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance);
|
||||
}
|
||||
|
||||
@@ -235,6 +237,11 @@ public class PurpurWorldConfig {
|
||||
enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp);
|
||||
}
|
||||
|
||||
+ public boolean endermanAllowGriefing = true;
|
||||
+ private void endermanSettings() {
|
||||
+ endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing);
|
||||
+ }
|
||||
+
|
||||
public boolean foxTypeChangesWithTulips = false;
|
||||
private void foxSettings() {
|
||||
foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips);
|
||||
@@ -1,36 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
|
||||
Date: Fri, 24 Apr 2020 09:33:11 -0500
|
||||
Subject: [PATCH] Entities pick up loot bypass mob-griefing gamerule
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/EntityInsentient.java b/src/main/java/net/minecraft/world/entity/EntityInsentient.java
|
||||
index 5c047d7f44087adef39bcb56c121f8859748ce42..d2841e1528804841532bbfa885a2689669ad5429 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/EntityInsentient.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/EntityInsentient.java
|
||||
@@ -614,7 +614,7 @@ public abstract class EntityInsentient extends EntityLiving {
|
||||
public void movementTick() {
|
||||
super.movementTick();
|
||||
this.world.getMethodProfiler().enter("looting");
|
||||
- if (!this.world.isClientSide && this.canPickupLoot() && this.isAlive() && !this.killed && this.world.getGameRules().getBoolean(GameRules.MOB_GRIEFING)) {
|
||||
+ if (!this.world.isClientSide && this.canPickupLoot() && this.isAlive() && !this.killed && (this.world.getGameRules().getBoolean(GameRules.MOB_GRIEFING) || world.purpurConfig.entitiesPickUpLootBypassMobGriefing)) { // Purpur
|
||||
List<EntityItem> list = this.world.a(EntityItem.class, this.getBoundingBox().grow(1.0D, 0.0D, 1.0D));
|
||||
Iterator iterator = list.iterator();
|
||||
|
||||
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
index 8033348257c0fcc6f3c1c376b6fb343c414618c5..3198f65bff04015babe7e529ad66588ef28e52be 100644
|
||||
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
@@ -147,10 +147,12 @@ public class PurpurWorldConfig {
|
||||
}
|
||||
|
||||
public boolean disableDropsOnCrammingDeath = false;
|
||||
+ public boolean entitiesPickUpLootBypassMobGriefing = false;
|
||||
public boolean milkCuresBadOmen = true;
|
||||
public double tridentLoyaltyVoidReturnHeight = 0.0D;
|
||||
private void miscGameplayMechanicsSettings() {
|
||||
disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath);
|
||||
+ entitiesPickUpLootBypassMobGriefing = getBoolean("gameplay-mechanics.entities-pick-up-loot-bypass-mob-griefing", entitiesPickUpLootBypassMobGriefing);
|
||||
milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen);
|
||||
tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight);
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
|
||||
Date: Fri, 24 Apr 2020 09:37:29 -0500
|
||||
Subject: [PATCH] Villagers farming can bypass mob-griefing gamerule
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/BehaviorFarm.java b/src/main/java/net/minecraft/world/entity/ai/behavior/BehaviorFarm.java
|
||||
index bd998ea93d7e8748b0a938f0a76b4ccf388c7b27..42c70a6c2972ac38e889a6d42fe2d7d4f6017d57 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/ai/behavior/BehaviorFarm.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/ai/behavior/BehaviorFarm.java
|
||||
@@ -38,7 +38,7 @@ public class BehaviorFarm extends Behavior<EntityVillager> {
|
||||
}
|
||||
|
||||
protected boolean a(WorldServer worldserver, EntityVillager entityvillager) {
|
||||
- if (!worldserver.getGameRules().getBoolean(GameRules.MOB_GRIEFING)) {
|
||||
+ if (!worldserver.getGameRules().getBoolean(GameRules.MOB_GRIEFING) && !worldserver.purpurConfig.villagerFarmingBypassMobGriefing) { // Purpur
|
||||
return false;
|
||||
} else if (entityvillager.getVillagerData().getProfession() != VillagerProfession.FARMER) {
|
||||
return false;
|
||||
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
index 3198f65bff04015babe7e529ad66588ef28e52be..e82485ee1270ce83ccc93825d795743d4ead23a1 100644
|
||||
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
@@ -319,9 +319,11 @@ public class PurpurWorldConfig {
|
||||
|
||||
public int villagerBrainTicks = 1;
|
||||
public boolean villagerUseBrainTicksOnlyWhenLagging = true;
|
||||
+ public boolean villagerFarmingBypassMobGriefing = false;
|
||||
private void villagerSettings() {
|
||||
villagerBrainTicks = getInt("mobs.villager.brain-ticks", villagerBrainTicks);
|
||||
villagerUseBrainTicksOnlyWhenLagging = getBoolean("mobs.villager.use-brain-ticks-only-when-lagging", villagerUseBrainTicksOnlyWhenLagging);
|
||||
+ villagerFarmingBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerFarmingBypassMobGriefing);
|
||||
}
|
||||
|
||||
public boolean witherSkeletonTakesWitherDamage = false;
|
||||
@@ -1,101 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 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
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/npc/EntityVillager.java b/src/main/java/net/minecraft/world/entity/npc/EntityVillager.java
|
||||
index c45e6ae3f912ac582c6ba693517e05cd8fbf33e2..284401de0e8f4e4cf6df64a8f2b619c10e937130 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/npc/EntityVillager.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/npc/EntityVillager.java
|
||||
@@ -59,6 +59,7 @@ import net.minecraft.world.entity.ai.BehaviorController;
|
||||
import net.minecraft.world.entity.ai.attributes.AttributeProvider;
|
||||
import net.minecraft.world.entity.ai.attributes.GenericAttributes;
|
||||
import net.minecraft.world.entity.ai.behavior.Behaviors;
|
||||
+import net.minecraft.world.entity.ai.goal.PathfinderGoalTempt;
|
||||
import net.minecraft.world.entity.ai.gossip.Reputation;
|
||||
import net.minecraft.world.entity.ai.gossip.ReputationType;
|
||||
import net.minecraft.world.entity.ai.memory.MemoryModuleType;
|
||||
@@ -143,6 +144,13 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation
|
||||
this.brainTickOffset = getRandom().nextInt(100); // Purpur
|
||||
}
|
||||
|
||||
+ // Purpur start
|
||||
+ @Override
|
||||
+ protected void initPathfinder() {
|
||||
+ if (world.purpurConfig.villagerFollowEmeraldBlock) 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/minecraft/world/entity/npc/EntityVillagerAbstract.java b/src/main/java/net/minecraft/world/entity/npc/EntityVillagerAbstract.java
|
||||
index 49821f0f26864c35be84a4a4288857a04668fbba..91142526187f96615b5cbd3ed3b68d9175cb9f8b 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/npc/EntityVillagerAbstract.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/npc/EntityVillagerAbstract.java
|
||||
@@ -25,11 +25,13 @@ import net.minecraft.world.entity.EnumMobSpawn;
|
||||
import net.minecraft.world.entity.GroupDataEntity;
|
||||
import net.minecraft.world.entity.player.EntityHuman;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
+import net.minecraft.world.item.crafting.RecipeItemStack;
|
||||
import net.minecraft.world.item.trading.IMerchant;
|
||||
import net.minecraft.world.item.trading.MerchantRecipe;
|
||||
import net.minecraft.world.item.trading.MerchantRecipeList;
|
||||
import net.minecraft.world.level.World;
|
||||
import net.minecraft.world.level.WorldAccess;
|
||||
+import net.minecraft.world.level.block.Blocks;
|
||||
import net.minecraft.world.level.pathfinder.PathType;
|
||||
|
||||
// CraftBukkit start
|
||||
@@ -45,6 +47,8 @@ import io.papermc.paper.event.player.PlayerTradeEvent;
|
||||
|
||||
public abstract class EntityVillagerAbstract extends EntityAgeable implements NPC, IMerchant {
|
||||
|
||||
+ static final RecipeItemStack TEMPT_ITEMS = RecipeItemStack.a(Blocks.EMERALD_BLOCK.getItem()); // Purpur
|
||||
+
|
||||
// CraftBukkit start
|
||||
private CraftMerchant craftMerchant;
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/npc/EntityVillagerTrader.java b/src/main/java/net/minecraft/world/entity/npc/EntityVillagerTrader.java
|
||||
index 69044827ed6b34924ffd89a977afa06df0dcefc3..6fab69bf5800ef8a37f29c3b6b2103051f36fedf 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/npc/EntityVillagerTrader.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/npc/EntityVillagerTrader.java
|
||||
@@ -26,6 +26,7 @@ import net.minecraft.world.entity.ai.goal.PathfinderGoalLookAtTradingPlayer;
|
||||
import net.minecraft.world.entity.ai.goal.PathfinderGoalMoveTowardsRestriction;
|
||||
import net.minecraft.world.entity.ai.goal.PathfinderGoalPanic;
|
||||
import net.minecraft.world.entity.ai.goal.PathfinderGoalRandomStrollLand;
|
||||
+import net.minecraft.world.entity.ai.goal.PathfinderGoalTempt;
|
||||
import net.minecraft.world.entity.ai.goal.PathfinderGoalTradeWithPlayer;
|
||||
import net.minecraft.world.entity.ai.goal.PathfinderGoalUseItem;
|
||||
import net.minecraft.world.entity.monster.EntityEvoker;
|
||||
@@ -89,6 +90,7 @@ public class EntityVillagerTrader extends EntityVillagerAbstract {
|
||||
this.goalSelector.a(1, new PathfinderGoalPanic(this, 0.5D));
|
||||
this.goalSelector.a(1, new PathfinderGoalLookAtTradingPlayer(this));
|
||||
this.goalSelector.a(2, new EntityVillagerTrader.a(this, 2.0D, 0.35D));
|
||||
+ if (world.purpurConfig.villagerTraderFollowEmeraldBlock) this.goalSelector.a(3, new PathfinderGoalTempt(this, 1.0D, false, TEMPT_ITEMS)); // Purpur
|
||||
this.goalSelector.a(4, new PathfinderGoalMoveTowardsRestriction(this, 0.35D));
|
||||
this.goalSelector.a(8, new PathfinderGoalRandomStrollLand(this, 0.35D));
|
||||
this.goalSelector.a(9, new PathfinderGoalInteract(this, EntityHuman.class, 3.0F, 1.0F));
|
||||
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
index e82485ee1270ce83ccc93825d795743d4ead23a1..2eaef857f474c05ef1b4aac4870222d2464da949 100644
|
||||
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
@@ -320,10 +320,17 @@ public class PurpurWorldConfig {
|
||||
public int villagerBrainTicks = 1;
|
||||
public boolean villagerUseBrainTicksOnlyWhenLagging = true;
|
||||
public boolean villagerFarmingBypassMobGriefing = false;
|
||||
+ public boolean villagerFollowEmeraldBlock = false;
|
||||
private void villagerSettings() {
|
||||
villagerBrainTicks = getInt("mobs.villager.brain-ticks", villagerBrainTicks);
|
||||
villagerUseBrainTicksOnlyWhenLagging = getBoolean("mobs.villager.use-brain-ticks-only-when-lagging", villagerUseBrainTicksOnlyWhenLagging);
|
||||
villagerFarmingBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerFarmingBypassMobGriefing);
|
||||
+ villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock);
|
||||
+ }
|
||||
+
|
||||
+ public boolean villagerTraderFollowEmeraldBlock = false;
|
||||
+ private void villagerTraderSettings() {
|
||||
+ villagerTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", villagerTraderFollowEmeraldBlock);
|
||||
}
|
||||
|
||||
public boolean witherSkeletonTakesWitherDamage = false;
|
||||
@@ -1,86 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 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
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/EntityInsentient.java b/src/main/java/net/minecraft/world/entity/EntityInsentient.java
|
||||
index d2841e1528804841532bbfa885a2689669ad5429..f6e868a5cd62e0d997a2538c6b2bead0e3d88178 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/EntityInsentient.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/EntityInsentient.java
|
||||
@@ -49,6 +49,7 @@ import net.minecraft.world.entity.item.EntityItem;
|
||||
import net.minecraft.world.entity.monster.EntityBlaze;
|
||||
import net.minecraft.world.entity.monster.EntityEnderman;
|
||||
import net.minecraft.world.entity.monster.IMonster;
|
||||
+import net.minecraft.world.entity.npc.EntityVillagerAbstract;
|
||||
import net.minecraft.world.entity.player.EntityHuman;
|
||||
import net.minecraft.world.entity.vehicle.EntityBoat;
|
||||
import net.minecraft.world.item.Item;
|
||||
@@ -1212,6 +1213,7 @@ public abstract class EntityInsentient extends EntityLiving {
|
||||
if (!this.isAlive()) {
|
||||
return EnumInteractionResult.PASS;
|
||||
} else if (this.getLeashHolder() == entityhuman) {
|
||||
+ if (enumhand == EnumHand.OFF_HAND && (world.purpurConfig.villagerCanBeLeashed || world.purpurConfig.villagerTraderCanBeLeashed) && this instanceof EntityVillagerAbstract) return EnumInteractionResult.CONSUME; // Purpur
|
||||
// CraftBukkit start - fire PlayerUnleashEntityEvent
|
||||
// Paper start - drop leash variable
|
||||
PlayerUnleashEntityEvent event = CraftEventFactory.callPlayerUnleashEntityEvent(this, entityhuman, !entityhuman.abilities.canInstantlyBuild);
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/npc/EntityVillager.java b/src/main/java/net/minecraft/world/entity/npc/EntityVillager.java
|
||||
index 284401de0e8f4e4cf6df64a8f2b619c10e937130..007e5c7ef9b5eaf5cbf262197f3d73d2a33741ea 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/npc/EntityVillager.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/npc/EntityVillager.java
|
||||
@@ -149,6 +149,11 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation
|
||||
protected void initPathfinder() {
|
||||
if (world.purpurConfig.villagerFollowEmeraldBlock) this.goalSelector.a(3, new PathfinderGoalTempt(this, 1.0D, false, TEMPT_ITEMS));
|
||||
}
|
||||
+
|
||||
+ @Override
|
||||
+ public boolean a(EntityHuman entityhuman) {
|
||||
+ return world.purpurConfig.villagerCanBeLeashed && !this.isLeashed();
|
||||
+ }
|
||||
// Purpur end
|
||||
|
||||
@Override
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/npc/EntityVillagerTrader.java b/src/main/java/net/minecraft/world/entity/npc/EntityVillagerTrader.java
|
||||
index 6fab69bf5800ef8a37f29c3b6b2103051f36fedf..8df4d985e3124ddc1643da8385b15348937bc320 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/npc/EntityVillagerTrader.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/npc/EntityVillagerTrader.java
|
||||
@@ -97,6 +97,13 @@ public class EntityVillagerTrader extends EntityVillagerAbstract {
|
||||
this.goalSelector.a(10, new PathfinderGoalLookAtPlayer(this, EntityInsentient.class, 8.0F));
|
||||
}
|
||||
|
||||
+ // Purpur - start
|
||||
+ @Override
|
||||
+ public boolean a(EntityHuman entityhuman) {
|
||||
+ return world.purpurConfig.villagerTraderCanBeLeashed && !this.isLeashed();
|
||||
+ }
|
||||
+ // Purpur - end
|
||||
+
|
||||
@Nullable
|
||||
@Override
|
||||
public EntityAgeable createChild(WorldServer worldserver, EntityAgeable entityageable) {
|
||||
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
index 2eaef857f474c05ef1b4aac4870222d2464da949..9922ca6bd7d856eea182b8dd3c210e5f726ef180 100644
|
||||
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
@@ -319,17 +319,21 @@ public class PurpurWorldConfig {
|
||||
|
||||
public int villagerBrainTicks = 1;
|
||||
public boolean villagerUseBrainTicksOnlyWhenLagging = true;
|
||||
+ public boolean villagerCanBeLeashed = false;
|
||||
public boolean villagerFarmingBypassMobGriefing = false;
|
||||
public boolean villagerFollowEmeraldBlock = false;
|
||||
private void villagerSettings() {
|
||||
villagerBrainTicks = getInt("mobs.villager.brain-ticks", villagerBrainTicks);
|
||||
villagerUseBrainTicksOnlyWhenLagging = getBoolean("mobs.villager.use-brain-ticks-only-when-lagging", villagerUseBrainTicksOnlyWhenLagging);
|
||||
+ villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed);
|
||||
villagerFarmingBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerFarmingBypassMobGriefing);
|
||||
villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock);
|
||||
}
|
||||
|
||||
+ public boolean villagerTraderCanBeLeashed = false;
|
||||
public boolean villagerTraderFollowEmeraldBlock = false;
|
||||
private void villagerTraderSettings() {
|
||||
+ villagerTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", villagerTraderCanBeLeashed);
|
||||
villagerTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", villagerTraderFollowEmeraldBlock);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user