mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-18 08:57:44 +01:00
Upstream has released updates that appear to apply and compile correctly Paper Changes: 7232d8f2a EntityLoadCrossbowEvent#shouldConsumeItem 4740bd6c8 Mark PlayerInventory#getItem as nullable bd9ace578 Add a config option to limit the number of entities of each type to load/save in a chunk (#4792) 6bafeb5a9 Move logic from last patch into correct place 9668118fd disable entity ticking flag after watchdog obliteration
74 lines
3.9 KiB
Diff
74 lines
3.9 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: BillyGalbreath <blake.galbreath@gmail.com>
|
|
Date: Fri, 27 Nov 2020 10:33:33 -0600
|
|
Subject: [PATCH] Zombie break door minimum difficulty option
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/PathfinderGoalBreakDoor.java b/src/main/java/net/minecraft/server/PathfinderGoalBreakDoor.java
|
|
index 7488a12926c5ee4adc3bc1fa3973988350381544..23870a271b759a953a095df835e08ea2a09f4218 100644
|
|
--- a/src/main/java/net/minecraft/server/PathfinderGoalBreakDoor.java
|
|
+++ b/src/main/java/net/minecraft/server/PathfinderGoalBreakDoor.java
|
|
@@ -13,7 +13,7 @@ public class PathfinderGoalBreakDoor extends PathfinderGoalDoorInteract {
|
|
super(entityinsentient);
|
|
this.b = -1;
|
|
this.c = -1;
|
|
- this.g = predicate;
|
|
+ this.g = entityinsentient instanceof EntityZombie ? difficulty -> testDifficulty(entity) : predicate; // Purpur
|
|
}
|
|
|
|
public PathfinderGoalBreakDoor(EntityInsentient entityinsentient, int i, Predicate<EnumDifficulty> predicate) {
|
|
@@ -82,4 +82,21 @@ public class PathfinderGoalBreakDoor extends PathfinderGoalDoorInteract {
|
|
private boolean a(EnumDifficulty enumdifficulty) {
|
|
return this.g.test(enumdifficulty);
|
|
}
|
|
+
|
|
+ // Purpur start
|
|
+ private boolean testDifficulty(Entity entity) {
|
|
+ EnumDifficulty difficulty = entity.world.getDifficulty();
|
|
+ switch (entity.world.purpurConfig.zombieBreakDoorMinDifficulty) {
|
|
+ case PEACEFUL:
|
|
+ return difficulty == EnumDifficulty.HARD || difficulty == EnumDifficulty.NORMAL || difficulty == EnumDifficulty.EASY || difficulty == EnumDifficulty.PEACEFUL;
|
|
+ case EASY:
|
|
+ return difficulty == EnumDifficulty.HARD || difficulty == EnumDifficulty.NORMAL || difficulty == EnumDifficulty.EASY;
|
|
+ case NORMAL:
|
|
+ return difficulty == EnumDifficulty.HARD || difficulty == EnumDifficulty.NORMAL;
|
|
+ case HARD:
|
|
+ default:
|
|
+ return difficulty == EnumDifficulty.HARD;
|
|
+ }
|
|
+ }
|
|
+ // Purpur end
|
|
}
|
|
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
|
index 478184f94b146419f9a3107b4f8fd3b08e914588..e6ca3585b8b34311ae2596b610e85953f1cf2a13 100644
|
|
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
|
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
|
@@ -2,6 +2,7 @@ package net.pl3x.purpur;
|
|
|
|
import net.minecraft.server.Block;
|
|
import net.minecraft.server.Blocks;
|
|
+import net.minecraft.server.EnumDifficulty;
|
|
import net.minecraft.server.Explosion;
|
|
import net.minecraft.server.IRegistry;
|
|
import net.minecraft.server.Item;
|
|
@@ -1112,6 +1113,7 @@ public class PurpurWorldConfig {
|
|
public double zombieJockeyChance = 0.05D;
|
|
public boolean zombieJockeyTryExistingChickens = true;
|
|
public boolean zombieAggressiveTowardsVillagerWhenLagging = true;
|
|
+ public EnumDifficulty zombieBreakDoorMinDifficulty = EnumDifficulty.HARD;
|
|
private void zombieSettings() {
|
|
zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable);
|
|
zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater);
|
|
@@ -1119,6 +1121,11 @@ public class PurpurWorldConfig {
|
|
zombieJockeyChance = getDouble("mobs.zombie.jockey.chance", zombieJockeyChance);
|
|
zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens);
|
|
zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging);
|
|
+ try {
|
|
+ zombieBreakDoorMinDifficulty = EnumDifficulty.valueOf(getString("mobs.zombie.break-door-minimum-difficulty", zombieBreakDoorMinDifficulty.name()));
|
|
+ } catch (IllegalArgumentException ignore) {
|
|
+ zombieBreakDoorMinDifficulty = EnumDifficulty.HARD;
|
|
+ }
|
|
}
|
|
|
|
public boolean zombieHorseCanSwim = false;
|