Files
Purpur/patches/server/0199-Option-to-make-drowned-break-doors.patch
Ben Kerllenevich dc4a29b567 Updated Upstream (Paper & Pufferfish)
Upstream has released updates that appear to apply and compile correctly

Paper Changes:
PaperMC/Paper@2033dba Updated Upstream (CraftBukkit)
PaperMC/Paper@a3ad720 Remove ChatColor usages (#7543)
PaperMC/Paper@8fc0999 Fix some nullability things (#7275)
PaperMC/Paper@fd069dd Remove incorrect throws javadoc in Team (#7869)
PaperMC/Paper@bed5cb2 Limit resolved selectors when enabled
PaperMC/Paper@4d83ed0 [ci skip] Changing the order of the rebase with autosquash command in the contributing.md (#6974)
PaperMC/Paper@071a4a2 throw exception if worlds are created while being ticked (#7653)
PaperMC/Paper@5b6397a Make leave messages for kicks the same as for quitting (#7874)
PaperMC/Paper@5befb55 Updated Upstream (Bukkit/CraftBukkit) (#7875)
PaperMC/Paper@b3deb25 Move some methods to RegionAccessor (#7635)
PaperMC/Paper@d8ef841 [DataConverter] Fix generator options parsing
PaperMC/Paper@4b27254 Fix treasure maps discovered settings (#7627)
PaperMC/Paper@276d830 Fix campfire walker in V1920

Pufferfish Changes:
pufferfish-gg/Pufferfish@671d68b Add Entity TTLs
pufferfish-gg/Pufferfish@aaca13d Updated Upstream (Paper)
2022-06-07 13:09:12 -04:00

56 lines
3.5 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: 12emin34 <macanovic.emin@gmail.com>
Date: Fri, 25 Jun 2021 13:56:15 +0200
Subject: [PATCH] Option to make drowned break doors
diff --git a/src/main/java/net/minecraft/world/entity/monster/Drowned.java b/src/main/java/net/minecraft/world/entity/monster/Drowned.java
index 195cbb1870caf48830ea8c3f294a258c3839431d..7e9c38d595c83bf482c701423d66c26a1ea1ea05 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java
@@ -28,6 +28,7 @@ import net.minecraft.world.entity.ai.goal.MoveToBlockGoal;
import net.minecraft.world.entity.ai.goal.RandomStrollGoal;
import net.minecraft.world.entity.ai.goal.RangedAttackGoal;
import net.minecraft.world.entity.ai.goal.ZombieAttackGoal;
+import net.minecraft.world.entity.ai.goal.MoveThroughVillageGoal;
import net.minecraft.world.entity.ai.goal.target.HurtByTargetGoal;
import net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal;
import net.minecraft.world.entity.ai.navigation.GroundPathNavigation;
@@ -122,6 +123,7 @@ public class Drowned extends Zombie implements RangedAttackMob {
this.goalSelector.addGoal(2, new Drowned.DrownedAttackGoal(this, 1.0D, false));
this.goalSelector.addGoal(5, new Drowned.DrownedGoToBeachGoal(this, 1.0D));
this.goalSelector.addGoal(6, new Drowned.DrownedSwimUpGoal(this, 1.0D, this.level.getSeaLevel()));
+ if (level.purpurConfig.drownedBreakDoors) this.goalSelector.addGoal(6, new MoveThroughVillageGoal(this, 1.0D, true, 4, this::canBreakDoors));
this.goalSelector.addGoal(7, new RandomStrollGoal(this, 1.0D));
this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, new Class[]{Drowned.class})).setAlertOthers(ZombifiedPiglin.class));
this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, this::okTarget));
@@ -171,7 +173,7 @@ public class Drowned extends Zombie implements RangedAttackMob {
@Override
public boolean supportsBreakDoorGoal() {
- return false;
+ return level.purpurConfig.drownedBreakDoors ? true : false;
}
@Override
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 08ebf171bae53b7140f3a572da3ef38df8fec480..1821bee2b071804016db70c180741839ecef9ca6 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1037,6 +1037,7 @@ public class PurpurWorldConfig {
public double drownedJockeyChance = 0.05D;
public boolean drownedJockeyTryExistingChickens = true;
public boolean drownedTakeDamageFromWater = false;
+ public boolean drownedBreakDoors = false;
private void drownedSettings() {
drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable);
drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater);
@@ -1052,6 +1053,7 @@ public class PurpurWorldConfig {
drownedJockeyChance = getDouble("mobs.drowned.jockey.chance", drownedJockeyChance);
drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens);
drownedTakeDamageFromWater = getBoolean("mobs.drowned.takes-damage-from-water", drownedTakeDamageFromWater);
+ drownedBreakDoors = getBoolean("mobs.drowned.can-break-doors", drownedBreakDoors);
}
public boolean elderGuardianRidable = false;