save stuff here

This commit is contained in:
Ben Kerllenevich
2023-06-09 00:01:03 -04:00
parent 0b3c94c72d
commit 8768f54932
159 changed files with 4276 additions and 3663 deletions

View File

@@ -460,7 +460,7 @@ index 0000000000000000000000000000000000000000..2b7f1dedb3289efc7e42a138f4483f49
+} +}
diff --git a/src/main/java/org/purpurmc/purpur/command/PurpurCommand.java b/src/main/java/org/purpurmc/purpur/command/PurpurCommand.java diff --git a/src/main/java/org/purpurmc/purpur/command/PurpurCommand.java b/src/main/java/org/purpurmc/purpur/command/PurpurCommand.java
new file mode 100644 new file mode 100644
index 0000000000000000000000000000000000000000..afdf04f8b22ad0b7c0b41675e44687b49c2f86d6 index 0000000000000000000000000000000000000000..173b6bba1c8eb4c6c6ab55cad478db7c4c91fd75
--- /dev/null --- /dev/null
+++ b/src/main/java/org/purpurmc/purpur/command/PurpurCommand.java +++ b/src/main/java/org/purpurmc/purpur/command/PurpurCommand.java
@@ -0,0 +1,65 @@ @@ -0,0 +1,65 @@
@@ -514,7 +514,7 @@ index 0000000000000000000000000000000000000000..afdf04f8b22ad0b7c0b41675e44687b4
+ MinecraftServer console = MinecraftServer.getServer(); + MinecraftServer console = MinecraftServer.getServer();
+ PurpurConfig.init((File) console.options.valueOf("purpur-settings")); + PurpurConfig.init((File) console.options.valueOf("purpur-settings"));
+ for (ServerLevel level : console.getAllLevels()) { + for (ServerLevel level : console.getAllLevels()) {
+ level.purpurConfig.init(); + level().purpurConfig.init();
+ } + }
+ console.server.reloadCount++; + console.server.reloadCount++;
+ +

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Barrels and enderchests 6 rows
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index b2f26b4b09d9bf2de273e1258f98c175c6d5900a..394427f591eb6e1f98bac92d6bfebea641da8154 100644 index e5527b4e0cc70be4f65be952293e02ac73e113a5..e73f0615ab8320da2a993d7dae0601d8e1536c58 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java --- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -1161,6 +1161,27 @@ public abstract class PlayerList { @@ -1161,6 +1161,27 @@ public abstract class PlayerList {
@@ -37,7 +37,7 @@ index b2f26b4b09d9bf2de273e1258f98c175c6d5900a..394427f591eb6e1f98bac92d6bfebea6
public boolean isWhiteListed(GameProfile profile) { public boolean isWhiteListed(GameProfile profile) {
diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java
index 58152160d609d0e9d105153aeb166a56a7955603..6b068863368e3f0c1102f35b87ffce3f77370fcb 100644 index cf008b8c7a2eb0c642fd9c2da376df86dcd588e2..96726f06b83193fd7c5156efe6411b10eb1db435 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java --- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java
@@ -187,6 +187,7 @@ public abstract class Player extends LivingEntity { @@ -187,6 +187,7 @@ public abstract class Player extends LivingEntity {
@@ -236,14 +236,13 @@ index 092f6843e3b43d4c615d2eee344f5966e96ae850..cb0c851ab5fcf676da2397040835a94d
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index 9fe1cdafdafc3f718ef4eb4fd4150971e2832738..5b10feadf1ec5e7bbba4244b6347fdedd0f4b1d4 100644 index 0cab29584c4d5205950571660b6c271d34e403eb..687710a138edd8492e58aa026872851d00466508 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -172,4 +172,39 @@ public class PurpurConfig { @@ -173,6 +173,41 @@ public class PurpurConfig {
}
return builder.build(); return builder.build();
} }
+
+ public static int barrelRows = 3; + public static int barrelRows = 3;
+ public static boolean enderChestSixRows = false; + public static boolean enderChestSixRows = false;
+ public static boolean enderChestPermissionRows = false; + public static boolean enderChestPermissionRows = false;
@@ -278,4 +277,7 @@ index 9fe1cdafdafc3f718ef4eb4fd4150971e2832738..5b10feadf1ec5e7bbba4244b6347fded
+ org.bukkit.event.inventory.InventoryType.ENDER_CHEST.setDefaultSize(enderChestSixRows ? 54 : 27); + org.bukkit.event.inventory.InventoryType.ENDER_CHEST.setDefaultSize(enderChestSixRows ? 54 : 27);
+ enderChestPermissionRows = getBoolean("settings.blocks.ender_chest.use-permissions-for-rows", enderChestPermissionRows); + enderChestPermissionRows = getBoolean("settings.blocks.ender_chest.use-permissions-for-rows", enderChestPermissionRows);
+ } + }
} +
public static String cannotRideMob = "<red>You cannot mount that mob";
private static void messages() {
cannotRideMob = getString("settings.messages.cannot-ride-mob", cannotRideMob);

View File

@@ -25,7 +25,7 @@ index 21725aee29e9120d1c7e1e19f91c21a73a28844f..849f0c7c6d13df00d90211a48d8b56ab
double d = this.llama.distanceToSqr(this.llama.getCaravanHead()); double d = this.llama.distanceToSqr(this.llama.getCaravanHead());
if (d > 676.0D) { if (d > 676.0D) {
diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java
index 08fbfa5df3196ad3d9fe086dcd8210ec8747f053..fbcd47e656a8d33da08d1d852a959bc7cf3a2394 100644 index 9ba0218910d7e5db9e735c50f2e60b5a1073816b..071089e3ec438c323ea715e74911df4a465a7017 100644
--- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java
+++ b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java
@@ -73,6 +73,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V @@ -73,6 +73,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V
@@ -36,7 +36,7 @@ index 08fbfa5df3196ad3d9fe086dcd8210ec8747f053..fbcd47e656a8d33da08d1d852a959bc7
public Llama(EntityType<? extends Llama> type, Level world) { public Llama(EntityType<? extends Llama> type, Level world) {
super(type, world); super(type, world);
@@ -125,7 +126,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V @@ -169,7 +170,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V
if (!this.inventory.getItem(1).isEmpty()) { if (!this.inventory.getItem(1).isEmpty()) {
nbt.put("DecorItem", this.inventory.getItem(1).save(new CompoundTag())); nbt.put("DecorItem", this.inventory.getItem(1).save(new CompoundTag()));
} }
@@ -45,7 +45,7 @@ index 08fbfa5df3196ad3d9fe086dcd8210ec8747f053..fbcd47e656a8d33da08d1d852a959bc7
} }
@Override @Override
@@ -136,7 +137,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V @@ -180,7 +181,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V
if (nbt.contains("DecorItem", 10)) { if (nbt.contains("DecorItem", 10)) {
this.inventory.setItem(1, ItemStack.of(nbt.getCompound("DecorItem"))); this.inventory.setItem(1, ItemStack.of(nbt.getCompound("DecorItem")));
} }
@@ -54,7 +54,7 @@ index 08fbfa5df3196ad3d9fe086dcd8210ec8747f053..fbcd47e656a8d33da08d1d852a959bc7
this.updateContainerEquipment(); this.updateContainerEquipment();
} }
@@ -475,6 +476,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V @@ -521,6 +522,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V
public void leaveCaravan() { public void leaveCaravan() {
if (this.caravanHead != null) { if (this.caravanHead != null) {
@@ -62,7 +62,7 @@ index 08fbfa5df3196ad3d9fe086dcd8210ec8747f053..fbcd47e656a8d33da08d1d852a959bc7
this.caravanHead.caravanTail = null; this.caravanHead.caravanTail = null;
} }
@@ -482,6 +484,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V @@ -528,6 +530,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V
} }
public void joinCaravan(Llama llama) { public void joinCaravan(Llama llama) {

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] AFK API
Adds the option for display names to be used in the afk broadcast Adds the option for display names to be used in the afk broadcast
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index dfdc50093e5d4b60438acfc12ab9f14255fa7a99..3b6af7b76db3d550eb7f199f9e8afd1c0af97e2e 100644 index d33eb475a41791b298c3300a14cf2af17e200c6c..68c163b6817ba4dd6ecd6b1fc82e37e5549d9569 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -2116,8 +2116,68 @@ public class ServerPlayer extends Player { @@ -2116,8 +2116,68 @@ public class ServerPlayer extends Player {
@@ -27,7 +27,7 @@ index dfdc50093e5d4b60438acfc12ab9f14255fa7a99..3b6af7b76db3d550eb7f199f9e8afd1c
+ +
+ String msg = afk ? org.purpurmc.purpur.PurpurConfig.afkBroadcastAway : org.purpurmc.purpur.PurpurConfig.afkBroadcastBack; + String msg = afk ? org.purpurmc.purpur.PurpurConfig.afkBroadcastAway : org.purpurmc.purpur.PurpurConfig.afkBroadcastBack;
+ +
+ org.purpurmc.purpur.event.PlayerAFKEvent event = new org.purpurmc.purpur.event.PlayerAFKEvent(this.getBukkitEntity(), afk, this.level.purpurConfig.idleTimeoutKick, msg, !Bukkit.isPrimaryThread()); + org.purpurmc.purpur.event.PlayerAFKEvent event = new org.purpurmc.purpur.event.PlayerAFKEvent(this.getBukkitEntity(), afk, this.level().purpurConfig.idleTimeoutKick, msg, !Bukkit.isPrimaryThread());
+ if (!event.callEvent() || event.shouldKick()) { + if (!event.callEvent() || event.shouldKick()) {
+ return; + return;
+ } + }
@@ -48,7 +48,7 @@ index dfdc50093e5d4b60438acfc12ab9f14255fa7a99..3b6af7b76db3d550eb7f199f9e8afd1c
+ server.getPlayerList().broadcastMiniMessage(String.format(msg, playerName), false); + server.getPlayerList().broadcastMiniMessage(String.format(msg, playerName), false);
+ } + }
+ +
+ if (this.level.purpurConfig.idleTimeoutUpdateTabList) { + if (this.level().purpurConfig.idleTimeoutUpdateTabList) {
+ String scoreboardName = getScoreboardName(); + String scoreboardName = getScoreboardName();
+ String playerListName = net.kyori.adventure.text.minimessage.MiniMessage.miniMessage().serialize(getBukkitEntity().playerListName()); + String playerListName = net.kyori.adventure.text.minimessage.MiniMessage.miniMessage().serialize(getBukkitEntity().playerListName());
+ String[] split = playerListName.split(scoreboardName); + String[] split = playerListName.split(scoreboardName);
@@ -79,7 +79,7 @@ index dfdc50093e5d4b60438acfc12ab9f14255fa7a99..3b6af7b76db3d550eb7f199f9e8afd1c
return this.stats; return this.stats;
} }
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index a419308c2d71bf0e228aa7c591deb76c77eda894..1645c63f36c6d4bcd6e6ac474af8504848b1c077 100644 index a419308c2d71bf0e228aa7c591deb76c77eda894..06046289cdad2413b065ea2515c852adeeeb2edb 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -340,6 +340,20 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic @@ -340,6 +340,20 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
@@ -109,7 +109,7 @@ index a419308c2d71bf0e228aa7c591deb76c77eda894..1645c63f36c6d4bcd6e6ac474af85048
if (this.player.getLastActionTime() > 0L && this.server.getPlayerIdleTimeout() > 0 && Util.getMillis() - this.player.getLastActionTime() > (long) this.server.getPlayerIdleTimeout() * 1000L * 60L && !this.player.wonGame) { // Paper - Prevent AFK kick while watching end credits. if (this.player.getLastActionTime() > 0L && this.server.getPlayerIdleTimeout() > 0 && Util.getMillis() - this.player.getLastActionTime() > (long) this.server.getPlayerIdleTimeout() * 1000L * 60L && !this.player.wonGame) { // Paper - Prevent AFK kick while watching end credits.
+ // Purpur start + // Purpur start
+ this.player.setAfk(true); + this.player.setAfk(true);
+ if (!this.player.level.purpurConfig.idleTimeoutKick || (!Boolean.parseBoolean(System.getenv("PURPUR_FORCE_IDLE_KICK")) && kickPermissionCache.getUnchecked(this.player.getBukkitEntity()))) { + if (!this.player.level().purpurConfig.idleTimeoutKick || (!Boolean.parseBoolean(System.getenv("PURPUR_FORCE_IDLE_KICK")) && kickPermissionCache.getUnchecked(this.player.getBukkitEntity()))) {
+ return; + return;
+ } + }
+ // Purpur end + // Purpur end
@@ -144,7 +144,7 @@ index a419308c2d71bf0e228aa7c591deb76c77eda894..1645c63f36c6d4bcd6e6ac474af85048
if (from.getX() != Double.MAX_VALUE) { if (from.getX() != Double.MAX_VALUE) {
Location oldTo = to.clone(); Location oldTo = to.clone();
diff --git a/src/main/java/net/minecraft/server/players/SleepStatus.java b/src/main/java/net/minecraft/server/players/SleepStatus.java diff --git a/src/main/java/net/minecraft/server/players/SleepStatus.java b/src/main/java/net/minecraft/server/players/SleepStatus.java
index 823efad652d8ff9e96b99375b102fef6f017716e..60f89d7c77a5e792e21e93e35ed1670bd565799a 100644 index 823efad652d8ff9e96b99375b102fef6f017716e..caa8a69bde0c212c36dd990a67836ac2f95548c0 100644
--- a/src/main/java/net/minecraft/server/players/SleepStatus.java --- a/src/main/java/net/minecraft/server/players/SleepStatus.java
+++ b/src/main/java/net/minecraft/server/players/SleepStatus.java +++ b/src/main/java/net/minecraft/server/players/SleepStatus.java
@@ -19,7 +19,7 @@ public class SleepStatus { @@ -19,7 +19,7 @@ public class SleepStatus {
@@ -152,7 +152,7 @@ index 823efad652d8ff9e96b99375b102fef6f017716e..60f89d7c77a5e792e21e93e35ed1670b
public boolean areEnoughDeepSleeping(int percentage, List<ServerPlayer> players) { public boolean areEnoughDeepSleeping(int percentage, List<ServerPlayer> players) {
// CraftBukkit start // CraftBukkit start
- int j = (int) players.stream().filter((eh) -> { return eh.isSleepingLongEnough() || eh.fauxSleeping; }).count(); - int j = (int) players.stream().filter((eh) -> { return eh.isSleepingLongEnough() || eh.fauxSleeping; }).count();
+ int j = (int) players.stream().filter((eh) -> { return eh.isSleepingLongEnough() || eh.fauxSleeping || (eh.level.purpurConfig.idleTimeoutCountAsSleeping && eh.isAfk()); }).count(); // Purpur + int j = (int) players.stream().filter((eh) -> { return eh.isSleepingLongEnough() || eh.fauxSleeping || (eh.level().purpurConfig.idleTimeoutCountAsSleeping && eh.isAfk()); }).count(); // Purpur
boolean anyDeepSleep = players.stream().anyMatch(Player::isSleepingLongEnough); boolean anyDeepSleep = players.stream().anyMatch(Player::isSleepingLongEnough);
return anyDeepSleep && j >= this.sleepersNeeded(percentage); return anyDeepSleep && j >= this.sleepersNeeded(percentage);
@@ -161,7 +161,7 @@ index 823efad652d8ff9e96b99375b102fef6f017716e..60f89d7c77a5e792e21e93e35ed1670b
if (!entityplayer.isSpectator()) { if (!entityplayer.isSpectator()) {
++this.activePlayers; ++this.activePlayers;
- if (entityplayer.isSleeping() || entityplayer.fauxSleeping) { // CraftBukkit - if (entityplayer.isSleeping() || entityplayer.fauxSleeping) { // CraftBukkit
+ if ((entityplayer.isSleeping() || entityplayer.fauxSleeping) || (entityplayer.level.purpurConfig.idleTimeoutCountAsSleeping && entityplayer.isAfk())) { // CraftBukkit // Purpur + if ((entityplayer.isSleeping() || entityplayer.fauxSleeping) || (entityplayer.level().purpurConfig.idleTimeoutCountAsSleeping && entityplayer.isAfk())) { // CraftBukkit // Purpur
++this.sleepingPlayers; ++this.sleepingPlayers;
} }
// CraftBukkit start // CraftBukkit start
@@ -178,7 +178,7 @@ index 3ff999734d14e2b6e7828e117f5ee32a60c26bc1..cfa9607241c3e69777ffc317206996c2
private EntitySelector() {} private EntitySelector() {}
// Paper start // Paper start
diff --git a/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java b/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java diff --git a/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java b/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java
index 58422f00c7d64dbd1cf6d7211c9838875cbe7778..12efea4fd2a78f32a165941aff52edd024a5592b 100644 index 58422f00c7d64dbd1cf6d7211c9838875cbe7778..db988d263b470e597d6df362da43d76005444572 100644
--- a/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java --- a/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java
+++ b/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java +++ b/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java
@@ -64,6 +64,10 @@ public class TargetingConditions { @@ -64,6 +64,10 @@ public class TargetingConditions {
@@ -186,7 +186,7 @@ index 58422f00c7d64dbd1cf6d7211c9838875cbe7778..12efea4fd2a78f32a165941aff52edd0
} else if (this.selector != null && !this.selector.test(targetEntity)) { } else if (this.selector != null && !this.selector.test(targetEntity)) {
return false; return false;
+ // Purpur start + // Purpur start
+ } else if (!targetEntity.level.purpurConfig.idleTimeoutTargetPlayer && targetEntity instanceof net.minecraft.server.level.ServerPlayer player && player.isAfk()) { + } else if (!targetEntity.level().purpurConfig.idleTimeoutTargetPlayer && targetEntity instanceof net.minecraft.server.level.ServerPlayer player && player.isAfk()) {
+ return false; + return false;
+ // Purpur end + // Purpur end
} else { } else {
@@ -290,7 +290,7 @@ index 687710a138edd8492e58aa026872851d00466508..d11442476371fefe6549654c97825a01
public static boolean enderChestSixRows = false; public static boolean enderChestSixRows = false;
public static boolean enderChestPermissionRows = false; public static boolean enderChestPermissionRows = false;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index f004e4290c0711d2e04c05677981f31b463af9fe..aa2371a611ca83247d422cc79ea37a8d798fdd0f 100644 index b51c96e3f09d303f28675fc440ad402fca3db654..7052ca0128562fb59c3acc2ef354092e349cbffb 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -92,6 +92,24 @@ public class PurpurWorldConfig { @@ -92,6 +92,24 @@ public class PurpurWorldConfig {
@@ -315,18 +315,18 @@ index f004e4290c0711d2e04c05677981f31b463af9fe..aa2371a611ca83247d422cc79ea37a8d
+ idleTimeoutTargetPlayer = getBoolean("gameplay-mechanics.player.idle-timeout.mobs-target", idleTimeoutTargetPlayer); + idleTimeoutTargetPlayer = getBoolean("gameplay-mechanics.player.idle-timeout.mobs-target", idleTimeoutTargetPlayer);
+ } + }
+ +
public double axolotlMaxHealth = 14.0D; public boolean babiesAreRidable = true;
private void axolotlSettings() { public boolean untamedTamablesAreRidable = true;
axolotlMaxHealth = getDouble("mobs.axolotl.attributes.max_health", axolotlMaxHealth); public boolean useNightVisionWhenRiding = false;
diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java
index d4da9ec6e00bb92b70598ee9a0d0ca5816562378..ea978171f89ac467b235f66fd539b957ba73e371 100644 index d4da9ec6e00bb92b70598ee9a0d0ca5816562378..cd2ec0b11f74e2b17f74ebb83f4e8b183f5b890e 100644
--- a/src/main/java/org/spigotmc/ActivationRange.java --- a/src/main/java/org/spigotmc/ActivationRange.java
+++ b/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java
@@ -199,6 +199,7 @@ public class ActivationRange @@ -199,6 +199,7 @@ public class ActivationRange
continue; continue;
} }
+ if (!player.level.purpurConfig.idleTimeoutTickNearbyEntities && player.isAfk()) continue; // Purpur + if (!player.level().purpurConfig.idleTimeoutTickNearbyEntities && player.isAfk()) continue; // Purpur
// Paper start // Paper start
int worldHeight = world.getHeight(); int worldHeight = world.getHeight();
ActivationRange.maxBB = player.getBoundingBox().inflate( maxRange, worldHeight, maxRange ); ActivationRange.maxBB = player.getBoundingBox().inflate( maxRange, worldHeight, maxRange );

View File

@@ -57,7 +57,7 @@ index 05405f22fa9001560eb3a6701f3bb0179a584fae..8bf1105601f000142246554d177965d1
protected int getInventorySize() { protected int getInventorySize() {
diff --git a/src/main/java/net/minecraft/world/entity/monster/Giant.java b/src/main/java/net/minecraft/world/entity/monster/Giant.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Giant.java b/src/main/java/net/minecraft/world/entity/monster/Giant.java
index e7e85c830d2a4804c625884010c5fec33008b014..8919464efeea5c1f6d10c88d77c4cf52af2b4a91 100644 index 3f7d21a5be726d301e1bcaa11f1788b51c23a7cd..db95323da1aef267aa4fbe56aaff63cb8684e15b 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Giant.java --- a/src/main/java/net/minecraft/world/entity/monster/Giant.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Giant.java +++ b/src/main/java/net/minecraft/world/entity/monster/Giant.java
@@ -12,6 +12,7 @@ import net.minecraft.world.level.LevelReader; @@ -12,6 +12,7 @@ import net.minecraft.world.level.LevelReader;
@@ -67,7 +67,7 @@ index e7e85c830d2a4804c625884010c5fec33008b014..8919464efeea5c1f6d10c88d77c4cf52
+ this.safeFallDistance = 10.0F; // Purpur + this.safeFallDistance = 10.0F; // Purpur
} }
@Override // Purpur start
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
index 050d297ef20d8b8f2601c70256aefadeb95b8a51..a939bcdbcdef50379b473822655e1f6a8db44892 100644 index 050d297ef20d8b8f2601c70256aefadeb95b8a51..a939bcdbcdef50379b473822655e1f6a8db44892 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Player invulnerabilities
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index 3b6af7b76db3d550eb7f199f9e8afd1c0af97e2e..206e8d9f7f04b4097402fa66390e7051af7df61e 100644 index 68c163b6817ba4dd6ecd6b1fc82e37e5549d9569..dcc4a25a8c7a7809222cf585901f057c64946a68 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -278,6 +278,7 @@ public class ServerPlayer extends Player { @@ -278,6 +278,7 @@ public class ServerPlayer extends Player {
@@ -82,7 +82,7 @@ index 3b6af7b76db3d550eb7f199f9e8afd1c0af97e2e..206e8d9f7f04b4097402fa66390e7051
public Scoreboard getScoreboard() { public Scoreboard getScoreboard() {
return this.getBukkitEntity().getScoreboard().getHandle(); return this.getBukkitEntity().getScoreboard().getHandle();
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index 1645c63f36c6d4bcd6e6ac474af8504848b1c077..585a712467ee29c32ef8e59cc800f2a5bfae1db6 100644 index 06046289cdad2413b065ea2515c852adeeeb2edb..863ac0559e8ec3ebad355a4863277ff6ee2228f0 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -2088,12 +2088,21 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic @@ -2088,12 +2088,21 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
@@ -90,7 +90,7 @@ index 1645c63f36c6d4bcd6e6ac474af8504848b1c077..585a712467ee29c32ef8e59cc800f2a5
public void handleResourcePackResponse(ServerboundResourcePackPacket packet) { public void handleResourcePackResponse(ServerboundResourcePackPacket packet) {
PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel());
+ // Purpur start + // Purpur start
+ if (player.level.purpurConfig.playerInvulnerableWhileAcceptingResourcePack && !this.player.acceptingResourcePack) { + if (player.level().purpurConfig.playerInvulnerableWhileAcceptingResourcePack && !this.player.acceptingResourcePack) {
+ ServerGamePacketListenerImpl.LOGGER.info("Disconnecting {} due to resource pack packet exploitation attempt", this.player.getName()); + ServerGamePacketListenerImpl.LOGGER.info("Disconnecting {} due to resource pack packet exploitation attempt", this.player.getName());
+ this.disconnect(Component.translatable("multiplayer.texturePrompt.failure.line1"), org.bukkit.event.player.PlayerKickEvent.Cause.RESOURCE_PACK_REJECTION); // "Server resource pack couldn't be applied" + this.disconnect(Component.translatable("multiplayer.texturePrompt.failure.line1"), org.bukkit.event.player.PlayerKickEvent.Cause.RESOURCE_PACK_REJECTION); // "Server resource pack couldn't be applied"
+ return; + return;
@@ -102,20 +102,20 @@ index 1645c63f36c6d4bcd6e6ac474af8504848b1c077..585a712467ee29c32ef8e59cc800f2a5
} }
// Paper start // Paper start
PlayerResourcePackStatusEvent.Status packStatus = PlayerResourcePackStatusEvent.Status.values()[packet.action.ordinal()]; PlayerResourcePackStatusEvent.Status packStatus = PlayerResourcePackStatusEvent.Status.values()[packet.action.ordinal()];
+ if (player.level.purpurConfig.playerInvulnerableWhileAcceptingResourcePack) player.setFrozen(packStatus == PlayerResourcePackStatusEvent.Status.ACCEPTED); // Purpur + if (player.level().purpurConfig.playerInvulnerableWhileAcceptingResourcePack) player.setFrozen(packStatus == PlayerResourcePackStatusEvent.Status.ACCEPTED); // Purpur
+ this.player.acceptingResourcePack = packStatus == PlayerResourcePackStatusEvent.Status.ACCEPTED; // Purpur + this.player.acceptingResourcePack = packStatus == PlayerResourcePackStatusEvent.Status.ACCEPTED; // Purpur
player.getBukkitEntity().setResourcePackStatus(packStatus); player.getBukkitEntity().setResourcePackStatus(packStatus);
this.cserver.getPluginManager().callEvent(new PlayerResourcePackStatusEvent(this.getCraftPlayer(), packStatus)); // CraftBukkit this.cserver.getPluginManager().callEvent(new PlayerResourcePackStatusEvent(this.getCraftPlayer(), packStatus)); // CraftBukkit
// Paper end // Paper end
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index e73f0615ab8320da2a993d7dae0601d8e1536c58..b17b953d089e84026707f4ddc28b9b9718099d2a 100644 index e73f0615ab8320da2a993d7dae0601d8e1536c58..4729f40c5420f80d4c6ba25a7745c4c51a327fbd 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java --- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -976,6 +976,8 @@ public abstract class PlayerList { @@ -976,6 +976,8 @@ public abstract class PlayerList {
} }
// Paper end // Paper end
+ entityplayer1.spawnInvulnerableTime = entityplayer1.level.purpurConfig.playerSpawnInvulnerableTicks; // Purpur + entityplayer1.spawnInvulnerableTime = entityplayer1.level().purpurConfig.playerSpawnInvulnerableTicks; // Purpur
+ +
// CraftBukkit end // CraftBukkit end
return entityplayer1; return entityplayer1;
@@ -146,7 +146,7 @@ index fea8f974c5e35b0f5c515a4c7f033482e54979c6..cf82afb7949a0031c1b656149e583c40
// Purpur end // Purpur end
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index aa2371a611ca83247d422cc79ea37a8d798fdd0f..b2b286de570ba7c80c40ff5d9ac4b2602054b523 100644 index 7052ca0128562fb59c3acc2ef354092e349cbffb..724ceea7198e540c391e0c5ad02817033bec694c 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -97,6 +97,8 @@ public class PurpurWorldConfig { @@ -97,6 +97,8 @@ public class PurpurWorldConfig {
@@ -166,4 +166,4 @@ index aa2371a611ca83247d422cc79ea37a8d798fdd0f..b2b286de570ba7c80c40ff5d9ac4b260
+ playerInvulnerableWhileAcceptingResourcePack = getBoolean("gameplay-mechanics.player.invulnerable-while-accepting-resource-pack", playerInvulnerableWhileAcceptingResourcePack); + playerInvulnerableWhileAcceptingResourcePack = getBoolean("gameplay-mechanics.player.invulnerable-while-accepting-resource-pack", playerInvulnerableWhileAcceptingResourcePack);
} }
public double axolotlMaxHealth = 14.0D; public boolean babiesAreRidable = true;

View File

@@ -18,7 +18,7 @@ index 5f20e075c532f0f1d413242949d1738c0c152bf7..e6f8cb165f7e3da5f0edfc952d140595
public static final Item CRAFTING_TABLE = registerBlock(Blocks.CRAFTING_TABLE); public static final Item CRAFTING_TABLE = registerBlock(Blocks.CRAFTING_TABLE);
public static final Item FARMLAND = registerBlock(Blocks.FARMLAND); public static final Item FARMLAND = registerBlock(Blocks.FARMLAND);
diff --git a/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java b/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java diff --git a/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java b/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java
index 936d844a5a246138c9f9ae4ae6e318242b8f1420..d58dc4aa02fe371deaf879df8692dbe93c648f9b 100644 index 936d844a5a246138c9f9ae4ae6e318242b8f1420..3bacb283befd396b757aef54008d89ca029ae52c 100644
--- a/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java --- a/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java +++ b/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java
@@ -40,6 +40,58 @@ public class SpawnerBlock extends BaseEntityBlock { @@ -40,6 +40,58 @@ public class SpawnerBlock extends BaseEntityBlock {
@@ -28,7 +28,7 @@ index 936d844a5a246138c9f9ae4ae6e318242b8f1420..d58dc4aa02fe371deaf879df8692dbe9
+ // Purpur start + // Purpur start
+ @Override + @Override
+ public void playerDestroy(Level level, net.minecraft.world.entity.player.Player player, BlockPos pos, BlockState state, BlockEntity blockEntity, ItemStack stack) { + public void playerDestroy(Level level, net.minecraft.world.entity.player.Player player, BlockPos pos, BlockState state, BlockEntity blockEntity, ItemStack stack) {
+ if (level.purpurConfig.silkTouchEnabled && player.getBukkitEntity().hasPermission("purpur.drop.spawners") && isSilkTouch(level, stack)) { + if (level().purpurConfig.silkTouchEnabled && player.getBukkitEntity().hasPermission("purpur.drop.spawners") && isSilkTouch(level, stack)) {
+ Optional<net.minecraft.world.entity.EntityType<?>> type = net.minecraft.world.entity.EntityType.by(((SpawnerBlockEntity) blockEntity).getSpawner().nextSpawnData.getEntityToSpawn()); + Optional<net.minecraft.world.entity.EntityType<?>> type = net.minecraft.world.entity.EntityType.by(((SpawnerBlockEntity) blockEntity).getSpawner().nextSpawnData.getEntityToSpawn());
+ +
+ net.minecraft.world.entity.EntityType<?> entityType = type.orElse(null); + net.minecraft.world.entity.EntityType<?> entityType = type.orElse(null);
@@ -36,7 +36,7 @@ index 936d844a5a246138c9f9ae4ae6e318242b8f1420..d58dc4aa02fe371deaf879df8692dbe9
+ CompoundTag display = new CompoundTag(); + CompoundTag display = new CompoundTag();
+ CompoundTag tag = new CompoundTag(); + CompoundTag tag = new CompoundTag();
+ +
+ String name = level.purpurConfig.silkTouchSpawnerName; + String name = level().purpurConfig.silkTouchSpawnerName;
+ if (name != null && !name.isEmpty() && !name.equals("Monster Spawner")) { + if (name != null && !name.isEmpty() && !name.equals("Monster Spawner")) {
+ net.kyori.adventure.text.Component displayName = net.kyori.adventure.text.minimessage.MiniMessage.miniMessage().deserialize(name, net.kyori.adventure.text.minimessage.tag.resolver.Placeholder.component("mob", mobName)); + net.kyori.adventure.text.Component displayName = net.kyori.adventure.text.minimessage.MiniMessage.miniMessage().deserialize(name, net.kyori.adventure.text.minimessage.tag.resolver.Placeholder.component("mob", mobName));
+ if (name.startsWith("<reset>")) { + if (name.startsWith("<reset>")) {
@@ -46,7 +46,7 @@ index 936d844a5a246138c9f9ae4ae6e318242b8f1420..d58dc4aa02fe371deaf879df8692dbe9
+ tag.put("display", display); + tag.put("display", display);
+ } + }
+ +
+ List<String> lore = level.purpurConfig.silkTouchSpawnerLore; + List<String> lore = level().purpurConfig.silkTouchSpawnerLore;
+ if (lore != null && !lore.isEmpty()) { + if (lore != null && !lore.isEmpty()) {
+ net.minecraft.nbt.ListTag list = new net.minecraft.nbt.ListTag(); + net.minecraft.nbt.ListTag list = new net.minecraft.nbt.ListTag();
+ for (String line : lore) { + for (String line : lore) {
@@ -73,7 +73,7 @@ index 936d844a5a246138c9f9ae4ae6e318242b8f1420..d58dc4aa02fe371deaf879df8692dbe9
+ } + }
+ +
+ private boolean isSilkTouch(Level level, ItemStack stack) { + private boolean isSilkTouch(Level level, ItemStack stack) {
+ return stack != null && level.purpurConfig.silkTouchTools.contains(stack.getItem()) && net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.SILK_TOUCH, stack) >= level.purpurConfig.minimumSilkTouchSpawnerRequire; + return stack != null && level().purpurConfig.silkTouchTools.contains(stack.getItem()) && net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.SILK_TOUCH, stack) >= level().purpurConfig.minimumSilkTouchSpawnerRequire;
+ } + }
+ // Purpur end + // Purpur end
+ +
@@ -89,7 +89,7 @@ index 936d844a5a246138c9f9ae4ae6e318242b8f1420..d58dc4aa02fe371deaf879df8692dbe9
int i = 15 + worldserver.random.nextInt(15) + worldserver.random.nextInt(15); int i = 15 + worldserver.random.nextInt(15) + worldserver.random.nextInt(15);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index b2b286de570ba7c80c40ff5d9ac4b2602054b523..10dd93d628605dc876f61fd798fb2ddaef94ba33 100644 index 724ceea7198e540c391e0c5ad02817033bec694c..67468fde7d4a670bb5b85ef07648cb7ffec6fc74 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -114,6 +114,38 @@ public class PurpurWorldConfig { @@ -114,6 +114,38 @@ public class PurpurWorldConfig {
@@ -128,12 +128,12 @@ index b2b286de570ba7c80c40ff5d9ac4b2602054b523..10dd93d628605dc876f61fd798fb2dda
+ }); + });
+ } + }
+ +
public double axolotlMaxHealth = 14.0D; public boolean babiesAreRidable = true;
private void axolotlSettings() { public boolean untamedTamablesAreRidable = true;
axolotlMaxHealth = getDouble("mobs.axolotl.attributes.max_health", axolotlMaxHealth); public boolean useNightVisionWhenRiding = false;
diff --git a/src/main/java/org/purpurmc/purpur/item/SpawnerItem.java b/src/main/java/org/purpurmc/purpur/item/SpawnerItem.java diff --git a/src/main/java/org/purpurmc/purpur/item/SpawnerItem.java b/src/main/java/org/purpurmc/purpur/item/SpawnerItem.java
new file mode 100644 new file mode 100644
index 0000000000000000000000000000000000000000..c038fb2bbb0f0e78380bc24bbd6348b869669a90 index 0000000000000000000000000000000000000000..bc59969740ea3518874e1be9f566804c1b518dcd
--- /dev/null --- /dev/null
+++ b/src/main/java/org/purpurmc/purpur/item/SpawnerItem.java +++ b/src/main/java/org/purpurmc/purpur/item/SpawnerItem.java
@@ -0,0 +1,36 @@ @@ -0,0 +1,36 @@
@@ -160,7 +160,7 @@ index 0000000000000000000000000000000000000000..c038fb2bbb0f0e78380bc24bbd6348b8
+ @Override + @Override
+ protected boolean updateCustomBlockEntityTag(BlockPos pos, Level level, Player player, ItemStack stack, BlockState state) { + protected boolean updateCustomBlockEntityTag(BlockPos pos, Level level, Player player, ItemStack stack, BlockState state) {
+ boolean handled = super.updateCustomBlockEntityTag(pos, level, player, stack, state); + boolean handled = super.updateCustomBlockEntityTag(pos, level, player, stack, state);
+ if (level.purpurConfig.silkTouchEnabled && player.getBukkitEntity().hasPermission("purpur.place.spawners")) { + if (level().purpurConfig.silkTouchEnabled && player.getBukkitEntity().hasPermission("purpur.place.spawners")) {
+ BlockEntity spawner = level.getBlockEntity(pos); + BlockEntity spawner = level.getBlockEntity(pos);
+ if (spawner instanceof SpawnerBlockEntity && stack.hasTag()) { + if (spawner instanceof SpawnerBlockEntity && stack.hasTag()) {
+ CompoundTag tag = stack.getTag(); + CompoundTag tag = stack.getTag();

View File

@@ -36,7 +36,7 @@ index 6c1a0e6f961e46a1a89850746a71e97b32514adf..1942649e868fc985a488034c411a6721
} }
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 10dd93d628605dc876f61fd798fb2ddaef94ba33..40354fc7dd9d0dc35c7e45b95b114713862e41fe 100644 index 67468fde7d4a670bb5b85ef07648cb7ffec6fc74..cd259a48b86fa257fc0ec748e667ba17e26e98a5 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -146,6 +146,15 @@ public class PurpurWorldConfig { @@ -146,6 +146,15 @@ public class PurpurWorldConfig {
@@ -52,6 +52,6 @@ index 10dd93d628605dc876f61fd798fb2ddaef94ba33..40354fc7dd9d0dc35c7e45b95b114713
+ turtleEggsBreakFromMinecarts = getBoolean("blocks.turtle_egg.break-from-minecarts", turtleEggsBreakFromMinecarts); + turtleEggsBreakFromMinecarts = getBoolean("blocks.turtle_egg.break-from-minecarts", turtleEggsBreakFromMinecarts);
+ } + }
+ +
public double axolotlMaxHealth = 14.0D; public boolean babiesAreRidable = true;
private void axolotlSettings() { public boolean untamedTamablesAreRidable = true;
axolotlMaxHealth = getDouble("mobs.axolotl.attributes.max_health", axolotlMaxHealth); public boolean useNightVisionWhenRiding = false;

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Giants AI settings
diff --git a/src/main/java/net/minecraft/world/entity/monster/Giant.java b/src/main/java/net/minecraft/world/entity/monster/Giant.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Giant.java b/src/main/java/net/minecraft/world/entity/monster/Giant.java
index 8919464efeea5c1f6d10c88d77c4cf52af2b4a91..a73514ab24686f991c1a5bded0684393fffb2efd 100644 index db95323da1aef267aa4fbe56aaff63cb8684e15b..29491be5f607477acd336fcff8cc472ad740ed50 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Giant.java --- a/src/main/java/net/minecraft/world/entity/monster/Giant.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Giant.java +++ b/src/main/java/net/minecraft/world/entity/monster/Giant.java
@@ -1,13 +1,36 @@ @@ -1,13 +1,36 @@
@@ -46,8 +46,8 @@ index 8919464efeea5c1f6d10c88d77c4cf52af2b4a91..a73514ab24686f991c1a5bded0684393
public class Giant extends Monster { public class Giant extends Monster {
public Giant(EntityType<? extends Giant> type, Level world) { public Giant(EntityType<? extends Giant> type, Level world) {
@@ -45,6 +68,53 @@ public class Giant extends Monster { @@ -45,6 +68,53 @@ public class Giant extends Monster {
this.getAttribute(Attributes.ATTACK_DAMAGE).setBaseValue(this.level().purpurConfig.giantAttackDamage);
} }
// Purpur end
+ @Override + @Override
+ protected void registerGoals() { + protected void registerGoals() {
@@ -108,10 +108,10 @@ index 8919464efeea5c1f6d10c88d77c4cf52af2b4a91..a73514ab24686f991c1a5bded0684393
} }
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 40354fc7dd9d0dc35c7e45b95b114713862e41fe..4e3fc06a58722800b6257df15f2a577227660d66 100644 index cd259a48b86fa257fc0ec748e667ba17e26e98a5..940ff156a42369656b919bef3dbadfc98d7dce01 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -400,6 +400,10 @@ public class PurpurWorldConfig { @@ -558,6 +558,10 @@ public class PurpurWorldConfig {
public double giantMovementSpeed = 0.5D; public double giantMovementSpeed = 0.5D;
public double giantAttackDamage = 50.0D; public double giantAttackDamage = 50.0D;
public double giantMaxHealth = 100.0D; public double giantMaxHealth = 100.0D;
@@ -120,9 +120,9 @@ index 40354fc7dd9d0dc35c7e45b95b114713862e41fe..4e3fc06a58722800b6257df15f2a5772
+ public boolean giantHaveAI = false; + public boolean giantHaveAI = false;
+ public boolean giantHaveHostileAI = false; + public boolean giantHaveHostileAI = false;
private void giantSettings() { private void giantSettings() {
giantMovementSpeed = getDouble("mobs.giant.movement-speed", giantMovementSpeed); giantRidable = getBoolean("mobs.giant.ridable", giantRidable);
giantAttackDamage = getDouble("mobs.giant.attack-damage", giantAttackDamage); giantRidableInWater = getBoolean("mobs.giant.ridable-in-water", giantRidableInWater);
@@ -413,6 +417,10 @@ public class PurpurWorldConfig { @@ -574,6 +578,10 @@ public class PurpurWorldConfig {
set("mobs.giant.attributes.max_health", oldValue); set("mobs.giant.attributes.max_health", oldValue);
} }
giantMaxHealth = getDouble("mobs.giant.attributes.max_health", giantMaxHealth); giantMaxHealth = getDouble("mobs.giant.attributes.max_health", giantMaxHealth);
@@ -132,4 +132,4 @@ index 40354fc7dd9d0dc35c7e45b95b114713862e41fe..4e3fc06a58722800b6257df15f2a5772
+ giantHaveHostileAI = getBoolean("mobs.giant.have-hostile-ai", giantHaveHostileAI); + giantHaveHostileAI = getBoolean("mobs.giant.have-hostile-ai", giantHaveHostileAI);
} }
public double glowSquidMaxHealth = 10.0D; public boolean glowSquidRidable = false;

View File

@@ -30,22 +30,22 @@ index 9168a02ede5b2fc924dbcf0063109f8e72d94d61..e2b1433034b1ab9bad821983515a37fd
entityhorseskeleton.setPos((double) blockposition.getX(), (double) blockposition.getY(), (double) blockposition.getZ()); entityhorseskeleton.setPos((double) blockposition.getX(), (double) blockposition.getY(), (double) blockposition.getZ());
this.addFreshEntity(entityhorseskeleton, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.LIGHTNING); // CraftBukkit this.addFreshEntity(entityhorseskeleton, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.LIGHTNING); // CraftBukkit
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 4e3fc06a58722800b6257df15f2a577227660d66..d902600e12ecd976ffd5eb4ec572dcf54fd50b54 100644 index 940ff156a42369656b919bef3dbadfc98d7dce01..524a6e6f90a3beea113d8cf6ff567793be9d15aa 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1021,6 +1021,7 @@ public class PurpurWorldConfig { @@ -1493,6 +1493,7 @@ public class PurpurWorldConfig {
public double zombieHorseJumpStrengthMax = 1.0D; public double zombieHorseJumpStrengthMax = 1.0D;
public double zombieHorseMovementSpeedMin = 0.2D; public double zombieHorseMovementSpeedMin = 0.2D;
public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseMovementSpeedMax = 0.2D;
+ public double zombieHorseSpawnChance = 0.0D; + public double zombieHorseSpawnChance = 0.0D;
private void zombieHorseSettings() { private void zombieHorseSettings() {
if (PurpurConfig.version < 10) { zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater);
double oldValue = getDouble("mobs.zombie_horse.attributes.max-health", zombieHorseMaxHealthMin); zombieHorseCanSwim = getBoolean("mobs.zombie_horse.can-swim", zombieHorseCanSwim);
@@ -1034,6 +1035,7 @@ public class PurpurWorldConfig { @@ -1510,6 +1511,7 @@ public class PurpurWorldConfig {
zombieHorseJumpStrengthMax = getDouble("mobs.zombie_horse.attributes.jump_strength.max", zombieHorseJumpStrengthMax); zombieHorseJumpStrengthMax = getDouble("mobs.zombie_horse.attributes.jump_strength.max", zombieHorseJumpStrengthMax);
zombieHorseMovementSpeedMin = getDouble("mobs.zombie_horse.attributes.movement_speed.min", zombieHorseMovementSpeedMin); zombieHorseMovementSpeedMin = getDouble("mobs.zombie_horse.attributes.movement_speed.min", zombieHorseMovementSpeedMin);
zombieHorseMovementSpeedMax = getDouble("mobs.zombie_horse.attributes.movement_speed.max", zombieHorseMovementSpeedMax); zombieHorseMovementSpeedMax = getDouble("mobs.zombie_horse.attributes.movement_speed.max", zombieHorseMovementSpeedMax);
+ zombieHorseSpawnChance = getDouble("mobs.zombie_horse.spawn-chance", zombieHorseSpawnChance); + zombieHorseSpawnChance = getDouble("mobs.zombie_horse.spawn-chance", zombieHorseSpawnChance);
} }
public double zombieVillagerMaxHealth = 20.0D; public boolean zombieVillagerRidable = false;

View File

@@ -5,11 +5,11 @@ Subject: [PATCH] Charged creeper naturally spawn
diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java
index e208a743d161f53944cb5756041522658c3c9ce6..19c8fb5ab8c7818679919de07664df7dc8d54e91 100644 index 539f44793f11db1971e72e2bbeae8d2d9d9b6798..4f374a2b1aab20fe2523df716a9d622c28749b7a 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java
@@ -255,6 +255,14 @@ public class Creeper extends Monster implements PowerableMob { @@ -255,6 +255,14 @@ public class Creeper extends Monster implements PowerableMob {
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.creeperMaxHealth); this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.creeperMaxHealth);
} }
+ public net.minecraft.world.entity.SpawnGroupData finalizeSpawn(net.minecraft.world.level.ServerLevelAccessor world, net.minecraft.world.DifficultyInstance difficulty, net.minecraft.world.entity.MobSpawnType spawnReason, @Nullable net.minecraft.world.entity.SpawnGroupData entityData, @Nullable CompoundTag entityNbt) { + public net.minecraft.world.entity.SpawnGroupData finalizeSpawn(net.minecraft.world.level.ServerLevelAccessor world, net.minecraft.world.DifficultyInstance difficulty, net.minecraft.world.entity.MobSpawnType spawnReason, @Nullable net.minecraft.world.entity.SpawnGroupData entityData, @Nullable CompoundTag entityNbt) {
@@ -24,22 +24,22 @@ index e208a743d161f53944cb5756041522658c3c9ce6..19c8fb5ab8c7818679919de07664df7d
protected SoundEvent getHurtSound(DamageSource source) { protected SoundEvent getHurtSound(DamageSource source) {
return SoundEvents.CREEPER_HURT; return SoundEvents.CREEPER_HURT;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index d902600e12ecd976ffd5eb4ec572dcf54fd50b54..c06893ab41e84e898528b4d3efe043ccb42cf6c3 100644 index 524a6e6f90a3beea113d8cf6ff567793be9d15aa..c42ae175742c4072d43dd04bd25a1338004e198a 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -270,6 +270,7 @@ public class PurpurWorldConfig { @@ -334,6 +334,7 @@ public class PurpurWorldConfig {
} public boolean creeperRidableInWater = true;
public boolean creeperControllable = true;
public double creeperMaxHealth = 20.0D; public double creeperMaxHealth = 20.0D;
+ public double creeperChargedChance = 0.0D; + public double creeperChargedChance = 0.0D;
private void creeperSettings() { private void creeperSettings() {
if (PurpurConfig.version < 10) { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable);
double oldValue = getDouble("mobs.creeper.attributes.max-health", creeperMaxHealth); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater);
@@ -277,6 +278,7 @@ public class PurpurWorldConfig { @@ -344,6 +345,7 @@ public class PurpurWorldConfig {
set("mobs.creeper.attributes.max_health", oldValue); set("mobs.creeper.attributes.max_health", oldValue);
} }
creeperMaxHealth = getDouble("mobs.creeper.attributes.max_health", creeperMaxHealth); creeperMaxHealth = getDouble("mobs.creeper.attributes.max_health", creeperMaxHealth);
+ creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance); + creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance);
} }
public double dolphinMaxHealth = 10.0D; public boolean dolphinRidable = false;

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Rabbit naturally spawn toast and killer
diff --git a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java
index c43bb09caa560e9ea4596b5bb167e1273e599ed7..f7a1b15bd29e9c0848141da469acbfb67e8d8e4d 100644 index db37932e56d88717a61eb8608b44c6911513aa35..48864c6f720be9132840e05ff4e7eb394ce3ad1d 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java --- a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java +++ b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java
@@ -472,10 +472,23 @@ public class Rabbit extends Animal implements VariantHolder<Rabbit.Variant> { @@ -472,10 +472,23 @@ public class Rabbit extends Animal implements VariantHolder<Rabbit.Variant> {
@@ -25,7 +25,7 @@ index c43bb09caa560e9ea4596b5bb167e1273e599ed7..f7a1b15bd29e9c0848141da469acbfb6
private static Rabbit.Variant getRandomRabbitVariant(LevelAccessor world, BlockPos pos) { private static Rabbit.Variant getRandomRabbitVariant(LevelAccessor world, BlockPos pos) {
+ // Purpur start + // Purpur start
+ Level level = world.getMinecraftWorld(); + Level level = world.getMinecraftWorld();
+ if (level.purpurConfig.rabbitNaturalKiller > 0D && world.getRandom().nextDouble() <= level.purpurConfig.rabbitNaturalKiller) { + if (level().purpurConfig.rabbitNaturalKiller > 0D && world.getRandom().nextDouble() <= level().purpurConfig.rabbitNaturalKiller) {
+ return Rabbit.Variant.EVIL; + return Rabbit.Variant.EVIL;
+ } + }
+ // Purpur end + // Purpur end
@@ -33,19 +33,19 @@ index c43bb09caa560e9ea4596b5bb167e1273e599ed7..f7a1b15bd29e9c0848141da469acbfb6
int i = world.getRandom().nextInt(100); int i = world.getRandom().nextInt(100);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index c06893ab41e84e898528b4d3efe043ccb42cf6c3..9acbc0d0b54229d8d97ce3b0a4e8e93534f89b35 100644 index c42ae175742c4072d43dd04bd25a1338004e198a..62937cdd2e6cc83a28bf96550b9ea4558f522c67 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -704,6 +704,8 @@ public class PurpurWorldConfig { @@ -995,6 +995,8 @@ public class PurpurWorldConfig {
} public boolean rabbitRidableInWater = true;
public boolean rabbitControllable = true;
public double rabbitMaxHealth = 3.0D; public double rabbitMaxHealth = 3.0D;
+ public double rabbitNaturalToast = 0.0D; + public double rabbitNaturalToast = 0.0D;
+ public double rabbitNaturalKiller = 0.0D; + public double rabbitNaturalKiller = 0.0D;
private void rabbitSettings() { private void rabbitSettings() {
if (PurpurConfig.version < 10) { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable);
double oldValue = getDouble("mobs.rabbit.attributes.max-health", rabbitMaxHealth); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater);
@@ -711,6 +713,8 @@ public class PurpurWorldConfig { @@ -1005,6 +1007,8 @@ public class PurpurWorldConfig {
set("mobs.rabbit.attributes.max_health", oldValue); set("mobs.rabbit.attributes.max_health", oldValue);
} }
rabbitMaxHealth = getDouble("mobs.rabbit.attributes.max_health", rabbitMaxHealth); rabbitMaxHealth = getDouble("mobs.rabbit.attributes.max_health", rabbitMaxHealth);
@@ -53,4 +53,4 @@ index c06893ab41e84e898528b4d3efe043ccb42cf6c3..9acbc0d0b54229d8d97ce3b0a4e8e935
+ rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller); + rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller);
} }
public double ravagerMaxHealth = 100.0D; public boolean ravagerRidable = false;

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Tulips change fox type
diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java
index b143032e87ecd74203e6486eea1248a3f6ce13f1..71fba6fd95f362916e93e89b626dad7c7a72da0b 100644 index 451abd7a6d7fb0926dcebdc4504b1c9c298766e3..7e191d8bb56d0b6591b3a60dfe07004d025eedfa 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Fox.java --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java
@@ -35,6 +35,7 @@ import net.minecraft.util.RandomSource; @@ -35,6 +35,7 @@ import net.minecraft.util.RandomSource;
@@ -51,7 +51,7 @@ index b143032e87ecd74203e6486eea1248a3f6ce13f1..71fba6fd95f362916e93e89b626dad7c
+ // Purpur start + // Purpur start
+ @Override + @Override
+ public InteractionResult mobInteract(Player player, InteractionHand hand) { + public InteractionResult mobInteract(Player player, InteractionHand hand) {
+ if (level.purpurConfig.foxTypeChangesWithTulips) { + if (level().purpurConfig.foxTypeChangesWithTulips) {
+ ItemStack itemstack = player.getItemInHand(hand); + ItemStack itemstack = player.getItemInHand(hand);
+ if (getVariant() == Type.RED && itemstack.getItem() == Items.WHITE_TULIP) { + if (getVariant() == Type.RED && itemstack.getItem() == Items.WHITE_TULIP) {
+ setVariant(Type.SNOW); + setVariant(Type.SNOW);
@@ -75,22 +75,22 @@ index b143032e87ecd74203e6486eea1248a3f6ce13f1..71fba6fd95f362916e93e89b626dad7c
// Paper start - Cancellable death event // Paper start - Cancellable death event
protected org.bukkit.event.entity.EntityDeathEvent dropAllDeathLoot(DamageSource source) { protected org.bukkit.event.entity.EntityDeathEvent dropAllDeathLoot(DamageSource source) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 9acbc0d0b54229d8d97ce3b0a4e8e93534f89b35..b60c5e84d13d7cd51d1203a35a9382c1ff6dec55 100644 index 62937cdd2e6cc83a28bf96550b9ea4558f522c67..15e98301b1b77c0e0df42aa923d3d55913bd4767 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -380,6 +380,7 @@ public class PurpurWorldConfig { @@ -513,6 +513,7 @@ public class PurpurWorldConfig {
} public boolean foxRidableInWater = true;
public boolean foxControllable = true;
public double foxMaxHealth = 10.0D; public double foxMaxHealth = 10.0D;
+ public boolean foxTypeChangesWithTulips = false; + public boolean foxTypeChangesWithTulips = false;
private void foxSettings() { private void foxSettings() {
if (PurpurConfig.version < 10) { foxRidable = getBoolean("mobs.fox.ridable", foxRidable);
double oldValue = getDouble("mobs.fox.attributes.max-health", foxMaxHealth); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater);
@@ -387,6 +388,7 @@ public class PurpurWorldConfig { @@ -523,6 +524,7 @@ public class PurpurWorldConfig {
set("mobs.fox.attributes.max_health", oldValue); set("mobs.fox.attributes.max_health", oldValue);
} }
foxMaxHealth = getDouble("mobs.fox.attributes.max_health", foxMaxHealth); foxMaxHealth = getDouble("mobs.fox.attributes.max_health", foxMaxHealth);
+ foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips); + foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips);
} }
public double ghastMaxHealth = 10.0D; public boolean frogRidable = false;

View File

@@ -5,33 +5,12 @@ Subject: [PATCH] Breedable Polar Bears
diff --git a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java diff --git a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java
index 3f185b02dc23942d2216cf9a8bdc493ffa2e75d9..05739e69f1a11138d7c13bb9d8ca7695753ae40c 100644 index 48ec595e76c09cf719477a543364f1206664afa5..b2cf680e377f849a7cc17136ebca3cf33e34048c 100644
--- a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java --- a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java
+++ b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java +++ b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java
@@ -74,17 +74,17 @@ public class PolarBear extends Animal implements NeutralMob {
// Purpur start
@Override
public boolean isRidable() {
- return level.purpurConfig.polarBearRidable;
+ return level().purpurConfig.polarBearRidable;
}
@Override
public boolean dismountsUnderwater() {
- return level.purpurConfig.useDismountsUnderwaterTag ? super.dismountsUnderwater() : !level.purpurConfig.polarBearRidableInWater;
+ return level().purpurConfig.useDismountsUnderwaterTag ? super.dismountsUnderwater() : !level().purpurConfig.polarBearRidableInWater;
}
@Override
public boolean isControllable() {
- return level.purpurConfig.polarBearControllable;
+ return level().purpurConfig.polarBearControllable;
}
@Override
@@ -99,6 +99,27 @@ public class PolarBear extends Animal implements NeutralMob { @@ -99,6 +99,27 @@ public class PolarBear extends Animal implements NeutralMob {
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.polarBearMaxHealth);
} }
// Purpur end
+ public boolean canMate(Animal other) { + public boolean canMate(Animal other) {
+ if (other == this) { + if (other == this) {
@@ -62,7 +41,7 @@ index 3f185b02dc23942d2216cf9a8bdc493ffa2e75d9..05739e69f1a11138d7c13bb9d8ca7695
@Override @Override
public boolean isFood(ItemStack stack) { public boolean isFood(ItemStack stack) {
- return false; - return false;
+ return level.purpurConfig.polarBearBreedableItem != null && stack.getItem() == level.purpurConfig.polarBearBreedableItem; // Purpur + return level().purpurConfig.polarBearBreedableItem != null && stack.getItem() == level().purpurConfig.polarBearBreedableItem; // Purpur
} }
@Override @Override
@@ -73,26 +52,26 @@ index 3f185b02dc23942d2216cf9a8bdc493ffa2e75d9..05739e69f1a11138d7c13bb9d8ca7695
+ // Purpur start + // Purpur start
+ if (level().purpurConfig.polarBearBreedableItem != null) { + if (level().purpurConfig.polarBearBreedableItem != null) {
+ this.goalSelector.addGoal(2, new net.minecraft.world.entity.ai.goal.BreedGoal(this, 1.0D)); + this.goalSelector.addGoal(2, new net.minecraft.world.entity.ai.goal.BreedGoal(this, 1.0D));
+ this.goalSelector.addGoal(3, new net.minecraft.world.entity.ai.goal.TemptGoal(this, 1.0D, net.minecraft.world.item.crafting.Ingredient.of(level.purpurConfig.polarBearBreedableItem), false)); + this.goalSelector.addGoal(3, new net.minecraft.world.entity.ai.goal.TemptGoal(this, 1.0D, net.minecraft.world.item.crafting.Ingredient.of(level().purpurConfig.polarBearBreedableItem), false));
+ } + }
+ // Purpur end + // Purpur end
this.goalSelector.addGoal(4, new FollowParentGoal(this, 1.25D)); this.goalSelector.addGoal(4, new FollowParentGoal(this, 1.25D));
this.goalSelector.addGoal(5, new RandomStrollGoal(this, 1.0D)); this.goalSelector.addGoal(5, new RandomStrollGoal(this, 1.0D));
this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F));
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index b60c5e84d13d7cd51d1203a35a9382c1ff6dec55..c9327c407d1fce1a80307eb3ad2c4c5c123fba8e 100644 index 15e98301b1b77c0e0df42aa923d3d55913bd4767..a7873252ba4ff059beeaa69017e51772468b58a2 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -686,6 +686,8 @@ public class PurpurWorldConfig { @@ -967,6 +967,8 @@ public class PurpurWorldConfig {
} public boolean polarBearRidableInWater = true;
public boolean polarBearControllable = true;
public double polarBearMaxHealth = 30.0D; public double polarBearMaxHealth = 30.0D;
+ public String polarBearBreedableItemString = ""; + public String polarBearBreedableItemString = "";
+ public Item polarBearBreedableItem = null; + public Item polarBearBreedableItem = null;
private void polarBearSettings() { private void polarBearSettings() {
if (PurpurConfig.version < 10) { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable);
double oldValue = getDouble("mobs.polar_bear.attributes.max-health", polarBearMaxHealth); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater);
@@ -693,6 +695,9 @@ public class PurpurWorldConfig { @@ -977,6 +979,9 @@ public class PurpurWorldConfig {
set("mobs.polar_bear.attributes.max_health", oldValue); set("mobs.polar_bear.attributes.max_health", oldValue);
} }
polarBearMaxHealth = getDouble("mobs.polar_bear.attributes.max_health", polarBearMaxHealth); polarBearMaxHealth = getDouble("mobs.polar_bear.attributes.max_health", polarBearMaxHealth);
@@ -101,4 +80,4 @@ index b60c5e84d13d7cd51d1203a35a9382c1ff6dec55..c9327c407d1fce1a80307eb3ad2c4c5c
+ if (item != Items.AIR) polarBearBreedableItem = item; + if (item != Items.AIR) polarBearBreedableItem = item;
} }
public double pufferfishMaxHealth = 3.0D; public boolean pufferfishRidable = false;

View File

@@ -5,20 +5,19 @@ Subject: [PATCH] Chickens can retaliate
diff --git a/src/main/java/net/minecraft/world/entity/animal/Chicken.java b/src/main/java/net/minecraft/world/entity/animal/Chicken.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Chicken.java b/src/main/java/net/minecraft/world/entity/animal/Chicken.java
index cbaf7993adb03cdb61c8e0cb29a7362b63ae3914..bf281b45979e16551fe4777ff69fb9ef67d1f839 100644 index ea404a84a43a02a5614d5142bb78a586edfc69f6..0f49705e3c7adf033cee9d0746319885c830224f 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Chicken.java --- a/src/main/java/net/minecraft/world/entity/animal/Chicken.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Chicken.java +++ b/src/main/java/net/minecraft/world/entity/animal/Chicken.java
@@ -57,6 +57,9 @@ public class Chicken extends Animal { @@ -74,19 +74,30 @@ public class Chicken extends Animal {
@Override @Override
public void initAttributes() { public void initAttributes() {
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.chickenMaxHealth); this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.chickenMaxHealth);
+ if (level.purpurConfig.chickenRetaliate) { + if (level().purpurConfig.chickenRetaliate) {
+ this.getAttribute(Attributes.ATTACK_DAMAGE).setBaseValue(2.0D); + this.getAttribute(Attributes.ATTACK_DAMAGE).setBaseValue(2.0D);
+ } + }
} }
// Purpur start @Override
@@ -80,13 +83,21 @@ public class Chicken extends Animal {
protected void registerGoals() { protected void registerGoals() {
this.goalSelector.addGoal(0, new FloatGoal(this)); this.goalSelector.addGoal(0, new FloatGoal(this));
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
@@ -31,7 +30,7 @@ index cbaf7993adb03cdb61c8e0cb29a7362b63ae3914..bf281b45979e16551fe4777ff69fb9ef
this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F));
this.goalSelector.addGoal(7, new RandomLookAroundGoal(this)); this.goalSelector.addGoal(7, new RandomLookAroundGoal(this));
+ // Purpur start + // Purpur start
+ if (level.purpurConfig.chickenRetaliate) { + if (level().purpurConfig.chickenRetaliate) {
+ this.goalSelector.addGoal(1, new net.minecraft.world.entity.ai.goal.MeleeAttackGoal(this, 1.0D, false)); + this.goalSelector.addGoal(1, new net.minecraft.world.entity.ai.goal.MeleeAttackGoal(this, 1.0D, false));
+ this.targetSelector.addGoal(1, new net.minecraft.world.entity.ai.goal.target.HurtByTargetGoal(this)); + this.targetSelector.addGoal(1, new net.minecraft.world.entity.ai.goal.target.HurtByTargetGoal(this));
+ } else { + } else {
@@ -51,22 +50,22 @@ index cbaf7993adb03cdb61c8e0cb29a7362b63ae3914..bf281b45979e16551fe4777ff69fb9ef
@Override @Override
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index c9327c407d1fce1a80307eb3ad2c4c5c123fba8e..b8e799b15ab1e4559f3e1aece3d4efa5f1d717a1 100644 index a7873252ba4ff059beeaa69017e51772468b58a2..7dd253bdce33673b4f748c47c137f14af5054cca 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -240,6 +240,7 @@ public class PurpurWorldConfig { @@ -288,6 +288,7 @@ public class PurpurWorldConfig {
} public boolean chickenRidableInWater = false;
public boolean chickenControllable = true;
public double chickenMaxHealth = 4.0D; public double chickenMaxHealth = 4.0D;
+ public boolean chickenRetaliate = false; + public boolean chickenRetaliate = false;
private void chickenSettings() { private void chickenSettings() {
if (PurpurConfig.version < 10) { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable);
double oldValue = getDouble("mobs.chicken.attributes.max-health", chickenMaxHealth); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater);
@@ -247,6 +248,7 @@ public class PurpurWorldConfig { @@ -298,6 +299,7 @@ public class PurpurWorldConfig {
set("mobs.chicken.attributes.max_health", oldValue); set("mobs.chicken.attributes.max_health", oldValue);
} }
chickenMaxHealth = getDouble("mobs.chicken.attributes.max_health", chickenMaxHealth); chickenMaxHealth = getDouble("mobs.chicken.attributes.max_health", chickenMaxHealth);
+ chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate); + chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate);
} }
public double codMaxHealth = 3.0D; public boolean codRidable = false;

View File

@@ -18,19 +18,19 @@ index 9b692140796eb5296a0478fd18d9b33278be6f5d..43d5b06a87909b544d151b238f7479c9
protected final RandomSource random; protected final RandomSource random;
public int tickCount; public int tickCount;
diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
index 8a8b9e8983be1acad66ad875c901be5bbdeabb1f..316716b8827b974fa62f7f27d57c3b776b42fbd8 100644 index 8a8b9e8983be1acad66ad875c901be5bbdeabb1f..09912c11bad7dc639b8afe8b0041a5fbc3189d7f 100644
--- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java --- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
+++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java +++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
@@ -679,6 +679,7 @@ public class ArmorStand extends LivingEntity { @@ -679,6 +679,7 @@ public class ArmorStand extends LivingEntity {
@Override @Override
public void tick() { public void tick() {
+ maxUpStep = level.purpurConfig.armorstandStepHeight; + maxUpStep = level().purpurConfig.armorstandStepHeight;
// Paper start // Paper start
if (!this.canTick) { if (!this.canTick) {
if (this.noTickPoseDirty) { if (this.noTickPoseDirty) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index b8e799b15ab1e4559f3e1aece3d4efa5f1d717a1..213b1be1cb2f22236bdb01575e2ee41eed562012 100644 index 7dd253bdce33673b4f748c47c137f14af5054cca..b957311ec505d5472492ecf49d33e86a2d62bcad 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -92,6 +92,11 @@ public class PurpurWorldConfig { @@ -92,6 +92,11 @@ public class PurpurWorldConfig {

View File

@@ -51,20 +51,20 @@ index 5f407535298a31a34cfe114dd863fd6a9b977707..29c7e33fe961020e5a0007287fe9b663
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 213b1be1cb2f22236bdb01575e2ee41eed562012..aad4d95b24473a3bdcaa8120c39985b62adb7aa4 100644 index b957311ec505d5472492ecf49d33e86a2d62bcad..df28065f664791a4cf5bbae5cd3cabe691d07a39 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -225,6 +225,9 @@ public class PurpurWorldConfig { @@ -261,6 +261,9 @@ public class PurpurWorldConfig {
} public boolean catRidableInWater = true;
public boolean catControllable = true;
public double catMaxHealth = 10.0D; public double catMaxHealth = 10.0D;
+ public int catSpawnDelay = 1200; + public int catSpawnDelay = 1200;
+ public int catSpawnSwampHutScanRange = 16; + public int catSpawnSwampHutScanRange = 16;
+ public int catSpawnVillageScanRange = 48; + public int catSpawnVillageScanRange = 48;
private void catSettings() { private void catSettings() {
if (PurpurConfig.version < 10) { catRidable = getBoolean("mobs.cat.ridable", catRidable);
double oldValue = getDouble("mobs.cat.attributes.max-health", catMaxHealth); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater);
@@ -232,6 +235,9 @@ public class PurpurWorldConfig { @@ -271,6 +274,9 @@ public class PurpurWorldConfig {
set("mobs.cat.attributes.max_health", oldValue); set("mobs.cat.attributes.max_health", oldValue);
} }
catMaxHealth = getDouble("mobs.cat.attributes.max_health", catMaxHealth); catMaxHealth = getDouble("mobs.cat.attributes.max_health", catMaxHealth);
@@ -73,4 +73,4 @@ index 213b1be1cb2f22236bdb01575e2ee41eed562012..aad4d95b24473a3bdcaa8120c39985b6
+ catSpawnVillageScanRange = getInt("mobs.cat.scan-range-for-other-cats.village", catSpawnVillageScanRange); + catSpawnVillageScanRange = getInt("mobs.cat.scan-range-for-other-cats.village", catSpawnVillageScanRange);
} }
public double caveSpiderMaxHealth = 12.0D; public boolean caveSpiderRidable = false;

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Cows eat mushrooms
diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java
index 9a973e2dc94aa1c8928eea87a6a12789381d15d8..07d60d3f49a4ed67cc4739baddbb41818b557eb1 100644 index d26a44d634fe02e595654e573d02243b5eb66086..e5e84c85d2b1c84c7612392bb060f713bd03ddcf 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Cow.java --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java
@@ -2,6 +2,7 @@ package net.minecraft.world.entity.animal; @@ -2,6 +2,7 @@ package net.minecraft.world.entity.animal;
@@ -28,7 +28,7 @@ index 9a973e2dc94aa1c8928eea87a6a12789381d15d8..07d60d3f49a4ed67cc4739baddbb4181
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
this.goalSelector.addGoal(1, new PanicGoal(this, 2.0D)); this.goalSelector.addGoal(1, new PanicGoal(this, 2.0D));
this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D)); this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D));
+ if (level.purpurConfig.cowFeedMushrooms > 0) this.goalSelector.addGoal(3, new TemptGoal(this, 1.25D, Ingredient.of(Items.WHEAT, Blocks.RED_MUSHROOM.asItem(), Blocks.BROWN_MUSHROOM.asItem()), false)); else // Purpur + if (level().purpurConfig.cowFeedMushrooms > 0) this.goalSelector.addGoal(3, new TemptGoal(this, 1.25D, Ingredient.of(Items.WHEAT, Blocks.RED_MUSHROOM.asItem(), Blocks.BROWN_MUSHROOM.asItem()), false)); else // Purpur
this.goalSelector.addGoal(3, new TemptGoal(this, 1.25D, Ingredient.of(Items.WHEAT), false)); this.goalSelector.addGoal(3, new TemptGoal(this, 1.25D, Ingredient.of(Items.WHEAT), false));
this.goalSelector.addGoal(4, new FollowParentGoal(this, 1.25D)); this.goalSelector.addGoal(4, new FollowParentGoal(this, 1.25D));
this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 1.0D)); this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 1.0D));
@@ -37,7 +37,7 @@ index 9a973e2dc94aa1c8928eea87a6a12789381d15d8..07d60d3f49a4ed67cc4739baddbb4181
player.setItemInHand(hand, itemstack1); player.setItemInHand(hand, itemstack1);
return InteractionResult.sidedSuccess(this.level().isClientSide); return InteractionResult.sidedSuccess(this.level().isClientSide);
+ // Purpur start - feed mushroom to change to mooshroom + // Purpur start - feed mushroom to change to mooshroom
+ } else if (level.purpurConfig.cowFeedMushrooms > 0 && this.getType() != EntityType.MOOSHROOM && isMushroom(itemstack)) { + } else if (level().purpurConfig.cowFeedMushrooms > 0 && this.getType() != EntityType.MOOSHROOM && isMushroom(itemstack)) {
+ return this.feedMushroom(player, itemstack); + return this.feedMushroom(player, itemstack);
+ // Purpur end + // Purpur end
} else { } else {
@@ -67,7 +67,7 @@ index 9a973e2dc94aa1c8928eea87a6a12789381d15d8..07d60d3f49a4ed67cc4739baddbb4181
+ private InteractionResult feedMushroom(Player player, ItemStack stack) { + private InteractionResult feedMushroom(Player player, ItemStack stack) {
+ level.broadcastEntityEvent(this, (byte) 18); // hearts + level.broadcastEntityEvent(this, (byte) 18); // hearts
+ playSound(SoundEvents.COW_MILK, 1.0F, 1.0F); + playSound(SoundEvents.COW_MILK, 1.0F, 1.0F);
+ if (incrementFeedCount(stack) < level.purpurConfig.cowFeedMushrooms) { + if (incrementFeedCount(stack) < level().purpurConfig.cowFeedMushrooms) {
+ if (!player.getAbilities().instabuild) { + if (!player.getAbilities().instabuild) {
+ stack.shrink(1); + stack.shrink(1);
+ } + }
@@ -114,22 +114,22 @@ index 9a973e2dc94aa1c8928eea87a6a12789381d15d8..07d60d3f49a4ed67cc4739baddbb4181
+ // Purpur end + // Purpur end
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index aad4d95b24473a3bdcaa8120c39985b62adb7aa4..b3f8077b7a27a0298d88a651cb93b4028f2621ee 100644 index df28065f664791a4cf5bbae5cd3cabe691d07a39..ed32ff8a2ab16226a8679daff5835cc819b3b709 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -273,6 +273,7 @@ public class PurpurWorldConfig { @@ -331,6 +331,7 @@ public class PurpurWorldConfig {
} public boolean cowRidableInWater = true;
public boolean cowControllable = true;
public double cowMaxHealth = 10.0D; public double cowMaxHealth = 10.0D;
+ public int cowFeedMushrooms = 0; + public int cowFeedMushrooms = 0;
private void cowSettings() { private void cowSettings() {
if (PurpurConfig.version < 10) { cowRidable = getBoolean("mobs.cow.ridable", cowRidable);
double oldValue = getDouble("mobs.cow.attributes.max-health", cowMaxHealth); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater);
@@ -280,6 +281,7 @@ public class PurpurWorldConfig { @@ -341,6 +342,7 @@ public class PurpurWorldConfig {
set("mobs.cow.attributes.max_health", oldValue); set("mobs.cow.attributes.max_health", oldValue);
} }
cowMaxHealth = getDouble("mobs.cow.attributes.max_health", cowMaxHealth); cowMaxHealth = getDouble("mobs.cow.attributes.max_health", cowMaxHealth);
+ cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms); + cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms);
} }
public double creeperMaxHealth = 20.0D; public boolean creeperRidable = false;

View File

@@ -5,14 +5,14 @@ Subject: [PATCH] Pigs give saddle back
diff --git a/src/main/java/net/minecraft/world/entity/animal/Pig.java b/src/main/java/net/minecraft/world/entity/animal/Pig.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Pig.java b/src/main/java/net/minecraft/world/entity/animal/Pig.java
index 26fe9e59e2321932c5ef70631510967162c0d896..2bd72ba2112c7212f331e6ca2655f557eee241d9 100644 index a22e5b6c13b48b46d16a859531d4231376bc1bfc..ff98a81f7104bbaf67ed85b8ad0946edf2a8c368 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Pig.java --- a/src/main/java/net/minecraft/world/entity/animal/Pig.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Pig.java +++ b/src/main/java/net/minecraft/world/entity/animal/Pig.java
@@ -174,6 +174,17 @@ public class Pig extends Animal implements ItemSteerable, Saddleable { @@ -174,6 +174,17 @@ public class Pig extends Animal implements ItemSteerable, Saddleable {
public InteractionResult mobInteract(Player player, InteractionHand hand) { public InteractionResult mobInteract(Player player, InteractionHand hand) {
boolean flag = this.isFood(player.getItemInHand(hand)); boolean flag = this.isFood(player.getItemInHand(hand));
+ if (level.purpurConfig.pigGiveSaddleBack && player.isSecondaryUseActive() && !flag && isSaddled() && !isVehicle()) { + if (level().purpurConfig.pigGiveSaddleBack && player.isSecondaryUseActive() && !flag && isSaddled() && !isVehicle()) {
+ this.steering.setSaddle(false); + this.steering.setSaddle(false);
+ if (!player.getAbilities().instabuild) { + if (!player.getAbilities().instabuild) {
+ ItemStack saddle = new ItemStack(Items.SADDLE); + ItemStack saddle = new ItemStack(Items.SADDLE);
@@ -27,22 +27,22 @@ index 26fe9e59e2321932c5ef70631510967162c0d896..2bd72ba2112c7212f331e6ca2655f557
if (!this.level().isClientSide) { if (!this.level().isClientSide) {
player.startRiding(this); player.startRiding(this);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index b3f8077b7a27a0298d88a651cb93b4028f2621ee..6cea8e16efb059ce2bc477a141d8807c2ea202ba 100644 index ed32ff8a2ab16226a8679daff5835cc819b3b709..8b4bedef0c02f72b07400564976ac55380291efc 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -661,6 +661,7 @@ public class PurpurWorldConfig { @@ -918,6 +918,7 @@ public class PurpurWorldConfig {
} public boolean pigRidableInWater = false;
public boolean pigControllable = true;
public double pigMaxHealth = 10.0D; public double pigMaxHealth = 10.0D;
+ public boolean pigGiveSaddleBack = false; + public boolean pigGiveSaddleBack = false;
private void pigSettings() { private void pigSettings() {
if (PurpurConfig.version < 10) { pigRidable = getBoolean("mobs.pig.ridable", pigRidable);
double oldValue = getDouble("mobs.pig.attributes.max-health", pigMaxHealth); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater);
@@ -668,6 +669,7 @@ public class PurpurWorldConfig { @@ -928,6 +929,7 @@ public class PurpurWorldConfig {
set("mobs.pig.attributes.max_health", oldValue); set("mobs.pig.attributes.max_health", oldValue);
} }
pigMaxHealth = getDouble("mobs.pig.attributes.max_health", pigMaxHealth); pigMaxHealth = getDouble("mobs.pig.attributes.max_health", pigMaxHealth);
+ pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); + pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack);
} }
public double piglinMaxHealth = 16.0D; public boolean piglinRidable = false;

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Snowman drop and put back pumpkin
diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java
index f95a472f3696061d5c1b0ac3bf281ae099871084..d4d843ee7fe52a97dc1dd063c7437f6a6b05b9de 100644 index a8b411cc3dd1f61b4f949862a077e87e26e424de..2a5ffaf5614e19305f4e08e15752364919e68a49 100644
--- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java
+++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java
@@ -191,6 +191,14 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @@ -191,6 +191,14 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM
@@ -32,19 +32,19 @@ index f95a472f3696061d5c1b0ac3bf281ae099871084..d4d843ee7fe52a97dc1dd063c7437f6a
this.forceDrops = false; // CraftBukkit this.forceDrops = false; // CraftBukkit
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 6cea8e16efb059ce2bc477a141d8807c2ea202ba..7aae3881ff9896ea5f300e0428fad0f0b4735a12 100644 index 8b4bedef0c02f72b07400564976ac55380291efc..3c8cbb7c114f9c14837da9977632fb6442075e35 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -840,6 +840,8 @@ public class PurpurWorldConfig { @@ -1181,6 +1181,8 @@ public class PurpurWorldConfig {
public boolean snowGolemControllable = true;
public boolean snowGolemLeaveTrailWhenRidden = false; public boolean snowGolemLeaveTrailWhenRidden = false;
public double snowGolemMaxHealth = 4.0D; public double snowGolemMaxHealth = 4.0D;
+ public boolean snowGolemDropsPumpkin = true; + public boolean snowGolemDropsPumpkin = true;
+ public boolean snowGolemPutPumpkinBack = false; + public boolean snowGolemPutPumpkinBack = false;
private void snowGolemSettings() { private void snowGolemSettings() {
snowGolemLeaveTrailWhenRidden = getBoolean("mobs.snow_golem.leave-trail-when-ridden", snowGolemLeaveTrailWhenRidden); snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable);
if (PurpurConfig.version < 10) { snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater);
@@ -848,6 +850,8 @@ public class PurpurWorldConfig { @@ -1192,6 +1194,8 @@ public class PurpurWorldConfig {
set("mobs.snow_golem.attributes.max_health", oldValue); set("mobs.snow_golem.attributes.max_health", oldValue);
} }
snowGolemMaxHealth = getDouble("mobs.snow_golem.attributes.max_health", snowGolemMaxHealth); snowGolemMaxHealth = getDouble("mobs.snow_golem.attributes.max_health", snowGolemMaxHealth);
@@ -52,4 +52,4 @@ index 6cea8e16efb059ce2bc477a141d8807c2ea202ba..7aae3881ff9896ea5f300e0428fad0f0
+ snowGolemPutPumpkinBack = getBoolean("mobs.snow_golem.pumpkin-can-be-added-back", snowGolemPutPumpkinBack); + snowGolemPutPumpkinBack = getBoolean("mobs.snow_golem.pumpkin-can-be-added-back", snowGolemPutPumpkinBack);
} }
public double snifferMaxHealth = 14.0D; public boolean snifferRidable = false;

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Ender dragon always drop full exp
diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
index 39cf0189b9e82e700049e144db9150b9783cfba6..587a6cd7bd4cb724a778f98677eb09b0eb494349 100644 index f160933af318becaf99befc0ecc0204bc48ed4a9..81cf89bc57af0f43d05ba93256255155bf0c4d53 100644
--- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
+++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
@@ -747,7 +747,7 @@ public class EnderDragon extends Mob implements Enemy { @@ -747,7 +747,7 @@ public class EnderDragon extends Mob implements Enemy {
@@ -13,27 +13,27 @@ index 39cf0189b9e82e700049e144db9150b9783cfba6..587a6cd7bd4cb724a778f98677eb09b0
short short0 = 500; short short0 = 500;
- if (this.dragonFight != null && !this.dragonFight.hasPreviouslyKilledDragon()) { - if (this.dragonFight != null && !this.dragonFight.hasPreviouslyKilledDragon()) {
+ if (this.dragonFight != null && (level.purpurConfig.enderDragonAlwaysDropsFullExp || !this.dragonFight.hasPreviouslyKilledDragon())) { + if (this.dragonFight != null && (level().purpurConfig.enderDragonAlwaysDropsFullExp || !this.dragonFight.hasPreviouslyKilledDragon())) {
short0 = 12000; short0 = 12000;
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 7aae3881ff9896ea5f300e0428fad0f0b4735a12..b11ff20bc282fbc114a699bff47ba2ff7eb757c7 100644 index 3c8cbb7c114f9c14837da9977632fb6442075e35..fdcee2e4d549ad2e5af4ba9b28c944a7cf82ad52 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -351,6 +351,7 @@ public class PurpurWorldConfig { @@ -459,6 +459,7 @@ public class PurpurWorldConfig {
} public boolean enderDragonControllable = true;
public double enderDragonMaxY = 320D;
public double enderDragonMaxHealth = 200.0D; public double enderDragonMaxHealth = 200.0D;
+ public boolean enderDragonAlwaysDropsFullExp = false; + public boolean enderDragonAlwaysDropsFullExp = false;
private void enderDragonSettings() { private void enderDragonSettings() {
if (PurpurConfig.version < 8) { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable);
double oldValue = getDouble("mobs.ender_dragon.max-health", enderDragonMaxHealth); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater);
@@ -362,6 +363,7 @@ public class PurpurWorldConfig { @@ -474,6 +475,7 @@ public class PurpurWorldConfig {
set("mobs.ender_dragon.attributes.max_health", oldValue); set("mobs.ender_dragon.attributes.max_health", oldValue);
} }
enderDragonMaxHealth = getDouble("mobs.ender_dragon.attributes.max_health", enderDragonMaxHealth); enderDragonMaxHealth = getDouble("mobs.ender_dragon.attributes.max_health", enderDragonMaxHealth);
+ enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp); + enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp);
} }
public double endermanMaxHealth = 40.0D; public boolean endermanRidable = false;

View File

@@ -5,14 +5,14 @@ Subject: [PATCH] Minecart settings and WASD controls
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index 206e8d9f7f04b4097402fa66390e7051af7df61e..b0eab4e73c85e4c18301978daac91a4b862617b0 100644 index dcc4a25a8c7a7809222cf585901f057c64946a68..d97eec4118983794b49018882f4cf1f2629bf0a7 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -1112,6 +1112,7 @@ public class ServerPlayer extends Player { @@ -1112,6 +1112,7 @@ public class ServerPlayer extends Player {
if (this.isInvulnerableTo(source)) { if (this.isInvulnerableTo(source)) {
return false; return false;
} else { } else {
+ if (source.is(DamageTypeTags.IS_FALL) && getRootVehicle() instanceof net.minecraft.world.entity.vehicle.AbstractMinecart && level.purpurConfig.minecartControllable && !level.purpurConfig.minecartControllableFallDamage) return false; // Purpur + if (source.is(DamageTypeTags.IS_FALL) && getRootVehicle() instanceof net.minecraft.world.entity.vehicle.AbstractMinecart && level().purpurConfig.minecartControllable && !level().purpurConfig.minecartControllableFallDamage) return false; // Purpur
boolean flag = this.server.isDedicatedServer() && this.isPvpAllowed() && source.is(DamageTypeTags.IS_FALL); boolean flag = this.server.isDedicatedServer() && this.isPvpAllowed() && source.is(DamageTypeTags.IS_FALL);
if (!flag && isSpawnInvulnerable() && !source.is(DamageTypeTags.BYPASSES_INVULNERABILITY)) { // Purpur if (!flag && isSpawnInvulnerable() && !source.is(DamageTypeTags.BYPASSES_INVULNERABILITY)) { // Purpur
@@ -148,7 +148,7 @@ index de4c1e4701236e7d5ec77339c51ad6a9d8288bb6..5ac102afde62c08f36886b466010ccfe
protected ResourceLocation drops; protected ResourceLocation drops;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index e7a8f166c202b76f89b6f9bbf0ce3de19c9c171e..dc0041c9edd87032937b3f0e4850e3c9a09362a4 100644 index e4f5b63162423a4d8fe0704746bd18f6a6134b2c..60f5f27583e57105bbc95ce72138d2b530669c56 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -97,6 +97,68 @@ public class PurpurWorldConfig { @@ -97,6 +97,68 @@ public class PurpurWorldConfig {

View File

@@ -5,14 +5,14 @@ Subject: [PATCH] Disable loot drops on death by cramming
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index bf3a3bd00260ba04c592c4313cde33e5d393d392..a97f8fe12e2d4390fa3811335ffa3e3c9ef4aec6 100644 index bf3a3bd00260ba04c592c4313cde33e5d393d392..7d9ecae23415e8f06831bc5bf4fae9137d43eb12 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -1800,6 +1800,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -1800,6 +1800,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
this.dropEquipment(); // CraftBukkit - from below this.dropEquipment(); // CraftBukkit - from below
if (this.shouldDropLoot() && this.level().getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) { if (this.shouldDropLoot() && this.level().getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) {
+ if (!(source.is(net.minecraft.world.damagesource.DamageTypes.CRAMMING) && level.purpurConfig.disableDropsOnCrammingDeath)) { // Purpur + if (!(source.is(net.minecraft.world.damagesource.DamageTypes.CRAMMING) && level().purpurConfig.disableDropsOnCrammingDeath)) { // Purpur
this.dropFromLootTable(source, flag); this.dropFromLootTable(source, flag);
// Paper start // Paper start
final boolean prev = this.clearEquipmentSlots; final boolean prev = this.clearEquipmentSlots;
@@ -25,7 +25,7 @@ index bf3a3bd00260ba04c592c4313cde33e5d393d392..a97f8fe12e2d4390fa3811335ffa3e3c
// CraftBukkit start - Call death event // Paper start - call advancement triggers with correct entity equipment // CraftBukkit start - Call death event // Paper start - call advancement triggers with correct entity equipment
org.bukkit.event.entity.EntityDeathEvent deathEvent = CraftEventFactory.callEntityDeathEvent(this, this.drops, () -> { org.bukkit.event.entity.EntityDeathEvent deathEvent = CraftEventFactory.callEntityDeathEvent(this, this.drops, () -> {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index dc0041c9edd87032937b3f0e4850e3c9a09362a4..c173ec973eecc8c79a75da3de349404ee455fb0f 100644 index 60f5f27583e57105bbc95ce72138d2b530669c56..15231c9ef7787830b6639e8c4ce34d230ac6a304 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -97,6 +97,11 @@ public class PurpurWorldConfig { @@ -97,6 +97,11 @@ public class PurpurWorldConfig {

View File

@@ -5,7 +5,7 @@ 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/ThrownTrident.java b/src/main/java/net/minecraft/world/entity/projectile/ThrownTrident.java diff --git a/src/main/java/net/minecraft/world/entity/projectile/ThrownTrident.java b/src/main/java/net/minecraft/world/entity/projectile/ThrownTrident.java
index 454dd67920826b8b62c2654abfd43fc08c2648e4..94d84f1d4232d1f4e866a7b9910243018c0fe7f0 100644 index 454dd67920826b8b62c2654abfd43fc08c2648e4..0ea182962d6647629fc98c9e7406f7b7ce012c5e 100644
--- a/src/main/java/net/minecraft/world/entity/projectile/ThrownTrident.java --- a/src/main/java/net/minecraft/world/entity/projectile/ThrownTrident.java
+++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownTrident.java +++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownTrident.java
@@ -60,7 +60,7 @@ public class ThrownTrident extends AbstractArrow { @@ -60,7 +60,7 @@ public class ThrownTrident extends AbstractArrow {
@@ -13,12 +13,12 @@ index 454dd67920826b8b62c2654abfd43fc08c2648e4..94d84f1d4232d1f4e866a7b991024301
byte b0 = (Byte) this.entityData.get(ThrownTrident.ID_LOYALTY); byte b0 = (Byte) this.entityData.get(ThrownTrident.ID_LOYALTY);
- if (b0 > 0 && (this.dealtDamage || this.isNoPhysics()) && entity != null) { - if (b0 > 0 && (this.dealtDamage || this.isNoPhysics()) && entity != null) {
+ if (b0 > 0 && (this.dealtDamage || this.isNoPhysics() || (level.purpurConfig.tridentLoyaltyVoidReturnHeight < 0.0D && getY() < level.purpurConfig.tridentLoyaltyVoidReturnHeight)) && entity != null) { // Purpur + if (b0 > 0 && (this.dealtDamage || this.isNoPhysics() || (level().purpurConfig.tridentLoyaltyVoidReturnHeight < 0.0D && getY() < level().purpurConfig.tridentLoyaltyVoidReturnHeight)) && entity != null) { // Purpur
if (!this.isAcceptibleReturnOwner()) { if (!this.isAcceptibleReturnOwner()) {
if (!this.level().isClientSide && this.pickup == AbstractArrow.Pickup.ALLOWED) { if (!this.level().isClientSide && this.pickup == AbstractArrow.Pickup.ALLOWED) {
this.spawnAtLocation(this.getPickupItem(), 0.1F); this.spawnAtLocation(this.getPickupItem(), 0.1F);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index fbc7685ad34c67180a54e967a48355db349d46e8..40c1c5f0d15391e67ad0aa9bb6529d3659f43f18 100644 index d6e79bc725ef6a13120a7196dd5dd6557efc7341..5d378a315e98cf7f0b8576684517fad0cebd35f3 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -99,9 +99,11 @@ public class PurpurWorldConfig { @@ -99,9 +99,11 @@ public class PurpurWorldConfig {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Add enderman and creeper griefing controls
diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java
index 19c8fb5ab8c7818679919de07664df7dc8d54e91..69b91852f2d4ffce14e6bd6f94902da61990717a 100644 index 4f374a2b1aab20fe2523df716a9d622c28749b7a..04143ca4d451132e6dcd764508e55c567994497d 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java
@@ -361,7 +361,7 @@ public class Creeper extends Monster implements PowerableMob { @@ -361,7 +361,7 @@ public class Creeper extends Monster implements PowerableMob {
@@ -18,7 +18,7 @@ index 19c8fb5ab8c7818679919de07664df7dc8d54e91..69b91852f2d4ffce14e6bd6f94902da6
this.spawnLingeringCloud(); this.spawnLingeringCloud();
} else { } else {
diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
index 50925ae443a52833d34304dec30be899dbdaee14..945abc20319819cca2631876cb0abca07f7a730a 100644 index a97d4e3c4dd03fa8cc299e825479463bb3e148c2..54b59b7faf69d54c05bdfee9b1bd2f137a5dd958 100644
--- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
+++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
@@ -530,6 +530,7 @@ public class EnderMan extends Monster implements NeutralMob { @@ -530,6 +530,7 @@ public class EnderMan extends Monster implements NeutralMob {
@@ -38,38 +38,38 @@ index 50925ae443a52833d34304dec30be899dbdaee14..945abc20319819cca2631876cb0abca0
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 40c1c5f0d15391e67ad0aa9bb6529d3659f43f18..a041fe8d6b728fc5d2811bb4ebd7454bb9dc73c6 100644 index 5d378a315e98cf7f0b8576684517fad0cebd35f3..ee5931cdc3352d8ea8664edb26de348f98c69fed 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -362,6 +362,7 @@ public class PurpurWorldConfig { @@ -426,6 +426,7 @@ public class PurpurWorldConfig {
public boolean creeperControllable = true;
public double creeperMaxHealth = 20.0D; public double creeperMaxHealth = 20.0D;
public double creeperChargedChance = 0.0D; public double creeperChargedChance = 0.0D;
+ public boolean creeperAllowGriefing = true; + public boolean creeperAllowGriefing = true;
private void creeperSettings() { private void creeperSettings() {
if (PurpurConfig.version < 10) { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable);
double oldValue = getDouble("mobs.creeper.attributes.max-health", creeperMaxHealth); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater);
@@ -370,6 +371,7 @@ public class PurpurWorldConfig { @@ -437,6 +438,7 @@ public class PurpurWorldConfig {
} }
creeperMaxHealth = getDouble("mobs.creeper.attributes.max_health", creeperMaxHealth); creeperMaxHealth = getDouble("mobs.creeper.attributes.max_health", creeperMaxHealth);
creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance); creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance);
+ creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing); + creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing);
} }
public double dolphinMaxHealth = 10.0D; public boolean dolphinRidable = false;
@@ -443,6 +445,7 @@ public class PurpurWorldConfig { @@ -558,6 +560,7 @@ public class PurpurWorldConfig {
} public boolean endermanRidableInWater = true;
public boolean endermanControllable = true;
public double endermanMaxHealth = 40.0D; public double endermanMaxHealth = 40.0D;
+ public boolean endermanAllowGriefing = true; + public boolean endermanAllowGriefing = true;
private void endermanSettings() { private void endermanSettings() {
if (PurpurConfig.version < 10) { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable);
double oldValue = getDouble("mobs.enderman.attributes.max-health", endermanMaxHealth); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater);
@@ -450,6 +453,7 @@ public class PurpurWorldConfig { @@ -568,6 +571,7 @@ public class PurpurWorldConfig {
set("mobs.enderman.attributes.max_health", oldValue); set("mobs.enderman.attributes.max_health", oldValue);
} }
endermanMaxHealth = getDouble("mobs.enderman.attributes.max_health", endermanMaxHealth); endermanMaxHealth = getDouble("mobs.enderman.attributes.max_health", endermanMaxHealth);
+ endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing); + endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing);
} }
public double endermiteMaxHealth = 8.0D; public boolean endermiteRidable = false;

View File

@@ -30,62 +30,62 @@ index 564908ce0a560c2190fb624e77d227d3b7031024..f2a4e214744227f1df32e3782e71f8a9
// CraftBukkit start // CraftBukkit start
private CraftMerchant craftMerchant; private CraftMerchant craftMerchant;
diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java
index dc8225eb864b0fead5990762669dc219e6e8c526..ba326c8e633a2b583f40e1e1d891c26542d84324 100644 index 6cbc3816d3f303d0646cd14a3648ebd2e88354aa..c613afe70566545136a48d6b820fb8d085934565 100644
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
@@ -152,6 +152,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -152,6 +152,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
this.getNavigation().setCanFloat(true); this.getNavigation().setCanFloat(true);
this.setCanPickUpLoot(true); this.setCanPickUpLoot(true);
this.setVillagerData(this.getVillagerData().setType(type).setProfession(VillagerProfession.NONE)); this.setVillagerData(this.getVillagerData().setType(type).setProfession(VillagerProfession.NONE));
+ if (level.purpurConfig.villagerFollowEmeraldBlock) this.goalSelector.addGoal(3, new net.minecraft.world.entity.ai.goal.TemptGoal(this, 1.0D, TEMPT_ITEMS, false)); + if (level().purpurConfig.villagerFollowEmeraldBlock) this.goalSelector.addGoal(3, new net.minecraft.world.entity.ai.goal.TemptGoal(this, 1.0D, TEMPT_ITEMS, false));
} }
@Override // Purpur start
diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
index bb8d422f8c2ac80457970f300390b797e8807dd8..fd77ea367ff9a8ec6d6c45be9bdd1fb0f4154c9e 100644 index 62deb4a443bf65655d2a4310c0dd9f40a02cb401..1c7359431533716b2681176b3b59b5028aa043c2 100644
--- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
+++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
@@ -108,6 +108,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill @@ -108,6 +108,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill
this.goalSelector.addGoal(1, new PanicGoal(this, 0.5D)); this.goalSelector.addGoal(1, new PanicGoal(this, 0.5D));
this.goalSelector.addGoal(1, new LookAtTradingPlayerGoal(this)); this.goalSelector.addGoal(1, new LookAtTradingPlayerGoal(this));
this.goalSelector.addGoal(2, new WanderingTrader.WanderToPositionGoal(this, 2.0D, 0.35D)); this.goalSelector.addGoal(2, new WanderingTrader.WanderToPositionGoal(this, 2.0D, 0.35D));
+ if (level.purpurConfig.wanderingTraderFollowEmeraldBlock) this.goalSelector.addGoal(3, new net.minecraft.world.entity.ai.goal.TemptGoal(this, 1.0D, TEMPT_ITEMS, false)); // Purpur + if (level().purpurConfig.wanderingTraderFollowEmeraldBlock) this.goalSelector.addGoal(3, new net.minecraft.world.entity.ai.goal.TemptGoal(this, 1.0D, TEMPT_ITEMS, false)); // Purpur
this.goalSelector.addGoal(4, new MoveTowardsRestrictionGoal(this, 0.35D)); this.goalSelector.addGoal(4, new MoveTowardsRestrictionGoal(this, 0.35D));
this.goalSelector.addGoal(8, new WaterAvoidingRandomStrollGoal(this, 0.35D)); this.goalSelector.addGoal(8, new WaterAvoidingRandomStrollGoal(this, 0.35D));
this.goalSelector.addGoal(9, new InteractGoal(this, Player.class, 3.0F, 1.0F)); this.goalSelector.addGoal(9, new InteractGoal(this, Player.class, 3.0F, 1.0F));
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index a041fe8d6b728fc5d2811bb4ebd7454bb9dc73c6..d4d5a82c3dd448bb32c2b60f07e5ec289eff89dd 100644 index ee5931cdc3352d8ea8664edb26de348f98c69fed..7baa48a5537cf7e5f47b106b39da039767547148 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1036,6 +1036,7 @@ public class PurpurWorldConfig { @@ -1442,6 +1442,7 @@ public class PurpurWorldConfig {
} public boolean villagerRidableInWater = true;
public boolean villagerControllable = true;
public double villagerMaxHealth = 20.0D; public double villagerMaxHealth = 20.0D;
+ public boolean villagerFollowEmeraldBlock = false; + public boolean villagerFollowEmeraldBlock = false;
private void villagerSettings() { private void villagerSettings() {
if (PurpurConfig.version < 10) { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
double oldValue = getDouble("mobs.villager.attributes.max-health", villagerMaxHealth); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
@@ -1043,6 +1044,7 @@ public class PurpurWorldConfig { @@ -1452,6 +1453,7 @@ public class PurpurWorldConfig {
set("mobs.villager.attributes.max_health", oldValue); set("mobs.villager.attributes.max_health", oldValue);
} }
villagerMaxHealth = getDouble("mobs.villager.attributes.max_health", villagerMaxHealth); villagerMaxHealth = getDouble("mobs.villager.attributes.max_health", villagerMaxHealth);
+ villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock); + villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock);
} }
public double vindicatorMaxHealth = 24.0D; public boolean vindicatorRidable = false;
@@ -1056,6 +1058,7 @@ public class PurpurWorldConfig { @@ -1474,6 +1476,7 @@ public class PurpurWorldConfig {
} public boolean wanderingTraderRidableInWater = true;
public boolean wanderingTraderControllable = true;
public double wanderingTraderMaxHealth = 20.0D; public double wanderingTraderMaxHealth = 20.0D;
+ public boolean wanderingTraderFollowEmeraldBlock = false; + public boolean wanderingTraderFollowEmeraldBlock = false;
private void wanderingTraderSettings() { private void wanderingTraderSettings() {
if (PurpurConfig.version < 10) { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable);
double oldValue = getDouble("mobs.wandering_trader.attributes.max-health", wanderingTraderMaxHealth); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater);
@@ -1063,6 +1066,7 @@ public class PurpurWorldConfig { @@ -1484,6 +1487,7 @@ public class PurpurWorldConfig {
set("mobs.wandering_trader.attributes.max_health", oldValue); set("mobs.wandering_trader.attributes.max_health", oldValue);
} }
wanderingTraderMaxHealth = getDouble("mobs.wandering_trader.attributes.max_health", wanderingTraderMaxHealth); wanderingTraderMaxHealth = getDouble("mobs.wandering_trader.attributes.max_health", wanderingTraderMaxHealth);
+ wanderingTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", wanderingTraderFollowEmeraldBlock); + wanderingTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", wanderingTraderFollowEmeraldBlock);
} }
public double witchMaxHealth = 26.0D; public boolean wardenRidable = false;

View File

@@ -5,82 +5,82 @@ Subject: [PATCH] Allow leashing villagers
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
index d8fc6216067cd03e10ec0bb5c13abc85215ac822..c68952d8f565ca14855fb43d9f8ea40bab27764f 100644 index 89ea4208bc30bcf3ed59b3a28384c0796b9204c4..0c1aa12dafb34ed76dd899893748556f9fe23487 100644
--- a/src/main/java/net/minecraft/world/entity/Mob.java --- a/src/main/java/net/minecraft/world/entity/Mob.java
+++ b/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java
@@ -1302,6 +1302,7 @@ public abstract class Mob extends LivingEntity implements Targeting { @@ -1302,6 +1302,7 @@ public abstract class Mob extends LivingEntity implements Targeting {
if (!this.isAlive()) { if (!this.isAlive()) {
return InteractionResult.PASS; return InteractionResult.PASS;
} else if (this.getLeashHolder() == player) { } else if (this.getLeashHolder() == player) {
+ if (hand == InteractionHand.OFF_HAND && (level.purpurConfig.villagerCanBeLeashed || level.purpurConfig.wanderingTraderCanBeLeashed) && this instanceof net.minecraft.world.entity.npc.AbstractVillager) return InteractionResult.CONSUME; // Purpur + if (hand == InteractionHand.OFF_HAND && (level().purpurConfig.villagerCanBeLeashed || level().purpurConfig.wanderingTraderCanBeLeashed) && this instanceof net.minecraft.world.entity.npc.AbstractVillager) return InteractionResult.CONSUME; // Purpur
// CraftBukkit start - fire PlayerUnleashEntityEvent // CraftBukkit start - fire PlayerUnleashEntityEvent
// Paper start - drop leash variable // Paper start - drop leash variable
org.bukkit.event.player.PlayerUnleashEntityEvent event = CraftEventFactory.callPlayerUnleashEntityEvent(this, player, hand, !player.getAbilities().instabuild); org.bukkit.event.player.PlayerUnleashEntityEvent event = CraftEventFactory.callPlayerUnleashEntityEvent(this, player, hand, !player.getAbilities().instabuild);
diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java
index ba326c8e633a2b583f40e1e1d891c26542d84324..e258d5b83e5cb517b9fe2e2818391f0666cacd84 100644 index c613afe70566545136a48d6b820fb8d085934565..813b9708d218589afaaa2d0578affcc78f0c075f 100644
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
@@ -182,6 +182,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -182,6 +182,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.villagerMaxHealth);
} }
// Purpur end
+ @Override + @Override
+ public boolean canBeLeashed(Player player) { + public boolean canBeLeashed(Player player) {
+ return level.purpurConfig.villagerCanBeLeashed && !this.isLeashed(); + return level().purpurConfig.villagerCanBeLeashed && !this.isLeashed();
+ } + }
+ +
@Override @Override
public Brain<Villager> getBrain() { public Brain<Villager> getBrain() {
return (Brain<Villager>) super.getBrain(); // CraftBukkit - decompile error return (Brain<Villager>) super.getBrain(); // CraftBukkit - decompile error
diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
index fd77ea367ff9a8ec6d6c45be9bdd1fb0f4154c9e..4dc8ac6a3e26a619ff4f2d7b907f192766c8281a 100644 index 1c7359431533716b2681176b3b59b5028aa043c2..41ddf073ecb8ea97cca8021390500d65866488a5 100644
--- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
+++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
@@ -88,6 +88,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill @@ -88,6 +88,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill
this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.wanderingTraderMaxHealth);
} }
// Purpur end
+ @Override + @Override
+ public boolean canBeLeashed(Player player) { + public boolean canBeLeashed(Player player) {
+ return level.purpurConfig.wanderingTraderCanBeLeashed && !this.isLeashed(); + return level().purpurConfig.wanderingTraderCanBeLeashed && !this.isLeashed();
+ } + }
+ +
@Override @Override
protected void registerGoals() { protected void registerGoals() {
this.goalSelector.addGoal(0, new FloatGoal(this)); this.goalSelector.addGoal(0, new FloatGoal(this));
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index d4d5a82c3dd448bb32c2b60f07e5ec289eff89dd..c3f1c669c9fa4e8c2077e948b6de65ab9c4c6fe3 100644 index 7baa48a5537cf7e5f47b106b39da039767547148..97710a3988ead1049b35de2a9be89cec738ed149 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1037,6 +1037,7 @@ public class PurpurWorldConfig { @@ -1443,6 +1443,7 @@ public class PurpurWorldConfig {
public boolean villagerControllable = true;
public double villagerMaxHealth = 20.0D; public double villagerMaxHealth = 20.0D;
public boolean villagerFollowEmeraldBlock = false; public boolean villagerFollowEmeraldBlock = false;
+ public boolean villagerCanBeLeashed = false; + public boolean villagerCanBeLeashed = false;
private void villagerSettings() { private void villagerSettings() {
if (PurpurConfig.version < 10) { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
double oldValue = getDouble("mobs.villager.attributes.max-health", villagerMaxHealth); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
@@ -1045,6 +1046,7 @@ public class PurpurWorldConfig { @@ -1454,6 +1455,7 @@ public class PurpurWorldConfig {
} }
villagerMaxHealth = getDouble("mobs.villager.attributes.max_health", villagerMaxHealth); villagerMaxHealth = getDouble("mobs.villager.attributes.max_health", villagerMaxHealth);
villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock); villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock);
+ villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); + villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed);
} }
public double vindicatorMaxHealth = 24.0D; public boolean vindicatorRidable = false;
@@ -1059,6 +1061,7 @@ public class PurpurWorldConfig { @@ -1477,6 +1479,7 @@ public class PurpurWorldConfig {
public boolean wanderingTraderControllable = true;
public double wanderingTraderMaxHealth = 20.0D; public double wanderingTraderMaxHealth = 20.0D;
public boolean wanderingTraderFollowEmeraldBlock = false; public boolean wanderingTraderFollowEmeraldBlock = false;
+ public boolean wanderingTraderCanBeLeashed = false; + public boolean wanderingTraderCanBeLeashed = false;
private void wanderingTraderSettings() { private void wanderingTraderSettings() {
if (PurpurConfig.version < 10) { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable);
double oldValue = getDouble("mobs.wandering_trader.attributes.max-health", wanderingTraderMaxHealth); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater);
@@ -1067,6 +1070,7 @@ public class PurpurWorldConfig { @@ -1488,6 +1491,7 @@ public class PurpurWorldConfig {
} }
wanderingTraderMaxHealth = getDouble("mobs.wandering_trader.attributes.max_health", wanderingTraderMaxHealth); wanderingTraderMaxHealth = getDouble("mobs.wandering_trader.attributes.max_health", wanderingTraderMaxHealth);
wanderingTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", wanderingTraderFollowEmeraldBlock); wanderingTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", wanderingTraderFollowEmeraldBlock);
+ wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); + wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed);
} }
public double witchMaxHealth = 26.0D; public boolean wardenRidable = false;

View File

@@ -31,7 +31,7 @@ index 5502ad143fd2575f1346334b5b4fe7846628f54e..37f6de6166fbede2d216e462cf7b1672
if (state.getBlock() instanceof LiquidBlockContainer) { if (state.getBlock() instanceof LiquidBlockContainer) {
((LiquidBlockContainer) state.getBlock()).placeLiquid(world, pos, state, fluidState); ((LiquidBlockContainer) state.getBlock()).placeLiquid(world, pos, state, fluidState);
diff --git a/src/main/java/net/minecraft/world/level/material/LavaFluid.java b/src/main/java/net/minecraft/world/level/material/LavaFluid.java diff --git a/src/main/java/net/minecraft/world/level/material/LavaFluid.java b/src/main/java/net/minecraft/world/level/material/LavaFluid.java
index 72f8b72c6436ca3b8eaeb39c7d3efe2c1462ae1d..3706ebc551413401b0e6a9a0b1c2e3257d1337c1 100644 index 72f8b72c6436ca3b8eaeb39c7d3efe2c1462ae1d..c0c072898226710f7e2e12b37838f7cfdfb0dde0 100644
--- a/src/main/java/net/minecraft/world/level/material/LavaFluid.java --- a/src/main/java/net/minecraft/world/level/material/LavaFluid.java
+++ b/src/main/java/net/minecraft/world/level/material/LavaFluid.java +++ b/src/main/java/net/minecraft/world/level/material/LavaFluid.java
@@ -198,6 +198,13 @@ public abstract class LavaFluid extends FlowingFluid { @@ -198,6 +198,13 @@ public abstract class LavaFluid extends FlowingFluid {
@@ -41,7 +41,7 @@ index 72f8b72c6436ca3b8eaeb39c7d3efe2c1462ae1d..3706ebc551413401b0e6a9a0b1c2e325
+ // Purpur start + // Purpur start
+ @Override + @Override
+ protected int getRequiredSources(Level level) { + protected int getRequiredSources(Level level) {
+ return level.purpurConfig.lavaInfiniteRequiredSources; + return level().purpurConfig.lavaInfiniteRequiredSources;
+ } + }
+ // Purpur end + // Purpur end
+ +
@@ -49,7 +49,7 @@ index 72f8b72c6436ca3b8eaeb39c7d3efe2c1462ae1d..3706ebc551413401b0e6a9a0b1c2e325
protected boolean canConvertToSource(Level world) { protected boolean canConvertToSource(Level world) {
return world.getGameRules().getBoolean(GameRules.RULE_LAVA_SOURCE_CONVERSION); return world.getGameRules().getBoolean(GameRules.RULE_LAVA_SOURCE_CONVERSION);
diff --git a/src/main/java/net/minecraft/world/level/material/WaterFluid.java b/src/main/java/net/minecraft/world/level/material/WaterFluid.java diff --git a/src/main/java/net/minecraft/world/level/material/WaterFluid.java b/src/main/java/net/minecraft/world/level/material/WaterFluid.java
index 82e85fbbd45244d02df90fa00c9046e7f51275a2..ec6c63075306f9e5389e83641d2c8a82369ddc6b 100644 index 82e85fbbd45244d02df90fa00c9046e7f51275a2..472dbf007468c39cfaa74e837e2df1cef9a8d1bf 100644
--- a/src/main/java/net/minecraft/world/level/material/WaterFluid.java --- a/src/main/java/net/minecraft/world/level/material/WaterFluid.java
+++ b/src/main/java/net/minecraft/world/level/material/WaterFluid.java +++ b/src/main/java/net/minecraft/world/level/material/WaterFluid.java
@@ -64,6 +64,13 @@ public abstract class WaterFluid extends FlowingFluid { @@ -64,6 +64,13 @@ public abstract class WaterFluid extends FlowingFluid {
@@ -59,7 +59,7 @@ index 82e85fbbd45244d02df90fa00c9046e7f51275a2..ec6c63075306f9e5389e83641d2c8a82
+ // Purpur start + // Purpur start
+ @Override + @Override
+ protected int getRequiredSources(Level level) { + protected int getRequiredSources(Level level) {
+ return level.purpurConfig.waterInfiniteRequiredSources; + return level().purpurConfig.waterInfiniteRequiredSources;
+ } + }
+ // Purpur end + // Purpur end
+ +
@@ -67,7 +67,7 @@ index 82e85fbbd45244d02df90fa00c9046e7f51275a2..ec6c63075306f9e5389e83641d2c8a82
@Override @Override
protected void beforeDestroyingBlock(LevelAccessor world, BlockPos pos, BlockState state, BlockPos source) { protected void beforeDestroyingBlock(LevelAccessor world, BlockPos pos, BlockState state, BlockPos source) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index c3f1c669c9fa4e8c2077e948b6de65ab9c4c6fe3..a759adea89cc44add6fe22c626e9978bda8f3bbe 100644 index 97710a3988ead1049b35de2a9be89cec738ed149..b99bd530802a3212cc42438b607d1aa46587acef 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -227,6 +227,11 @@ public class PurpurWorldConfig { @@ -227,6 +227,11 @@ public class PurpurWorldConfig {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Add player death exp control options
diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java
index 7b39cb5346925c14f3f144d622ca7e5855420aa6..f67bd221a239d98151e055f444795dea28a07269 100644 index 7b39cb5346925c14f3f144d622ca7e5855420aa6..fa2a0cc24bbe31abd49ce0f3f41bab2aa5d9c81f 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java --- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java
@@ -1998,9 +1998,19 @@ public abstract class Player extends LivingEntity { @@ -1998,9 +1998,19 @@ public abstract class Player extends LivingEntity {
@@ -21,18 +21,18 @@ index 7b39cb5346925c14f3f144d622ca7e5855420aa6..f67bd221a239d98151e055f444795dea
+ toDrop = Math.round(((Number) scriptEngine.eval("let expLevel = " + experienceLevel + "; " + + toDrop = Math.round(((Number) scriptEngine.eval("let expLevel = " + experienceLevel + "; " +
+ "let expTotal = " + totalExperience + "; " + + "let expTotal = " + totalExperience + "; " +
+ "let exp = " + experienceProgress + "; " + + "let exp = " + experienceProgress + "; " +
+ level.purpurConfig.playerDeathExpDropEquation)).floatValue()); + level().purpurConfig.playerDeathExpDropEquation)).floatValue());
+ } catch (javax.script.ScriptException e) { + } catch (javax.script.ScriptException e) {
+ e.printStackTrace(); + e.printStackTrace();
+ toDrop = experienceLevel * 7; + toDrop = experienceLevel * 7;
+ } + }
+ return Math.min(toDrop, level.purpurConfig.playerDeathExpDropMax); + return Math.min(toDrop, level().purpurConfig.playerDeathExpDropMax);
+ // Purpur end + // Purpur end
} else { } else {
return 0; return 0;
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index e92879a7e0458eeee9b8006bdc64228808cc9e08..b0e70dd59fd488f4c094326aae2647e08a2ee758 100644 index 17ba29e1538d3007e7befbe3b44d4ef291c1af05..4c73bd5aae5587e1d196a7b63fe84319cad0853d 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -175,6 +175,8 @@ public class PurpurWorldConfig { @@ -175,6 +175,8 @@ public class PurpurWorldConfig {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Configurable void damage height and damage
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 43d5b06a87909b544d151b238f7479c95c1ac1b2..f5ae3d265fa190af4d8205ffa45ce053fe0c7ddc 100644 index 43d5b06a87909b544d151b238f7479c95c1ac1b2..ba7901f72f97275ffac8d30e7b6c39f1f31dad37 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java --- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -834,7 +834,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -834,7 +834,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -13,12 +13,12 @@ index 43d5b06a87909b544d151b238f7479c95c1ac1b2..f5ae3d265fa190af4d8205ffa45ce053
public void checkBelowWorld() { public void checkBelowWorld() {
// Paper start - Configurable nether ceiling damage // Paper start - Configurable nether ceiling damage
- if (this.getY() < (double) (this.level.getMinBuildHeight() - 64) || (this.level.getWorld().getEnvironment() == org.bukkit.World.Environment.NETHER - if (this.getY() < (double) (this.level.getMinBuildHeight() - 64) || (this.level.getWorld().getEnvironment() == org.bukkit.World.Environment.NETHER
+ if (this.getY() < (double) (this.level.getMinBuildHeight() + level.purpurConfig.voidDamageHeight) || (this.level.getWorld().getEnvironment() == org.bukkit.World.Environment.NETHER // Purpur + if (this.getY() < (double) (this.level.getMinBuildHeight() + level().purpurConfig.voidDamageHeight) || (this.level.getWorld().getEnvironment() == org.bukkit.World.Environment.NETHER // Purpur
&& this.level.paperConfig().environment.netherCeilingVoidDamageHeight.test(v -> this.getY() >= v) && this.level.paperConfig().environment.netherCeilingVoidDamageHeight.test(v -> this.getY() >= v)
&& (!(this instanceof Player player) || !player.getAbilities().invulnerable))) { && (!(this instanceof Player player) || !player.getAbilities().invulnerable))) {
// Paper end // Paper end
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index a97f8fe12e2d4390fa3811335ffa3e3c9ef4aec6..2ac30426faa256dbfac48c0accab53a9c72809b9 100644 index 7d9ecae23415e8f06831bc5bf4fae9137d43eb12..6e0250d4ae4afb73d8f6f613ec014d38552ffa6d 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -2481,7 +2481,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -2481,7 +2481,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -31,7 +31,7 @@ index a97f8fe12e2d4390fa3811335ffa3e3c9ef4aec6..2ac30426faa256dbfac48c0accab53a9
protected void updateSwingTime() { protected void updateSwingTime() {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index b0e70dd59fd488f4c094326aae2647e08a2ee758..5b41745fdc55441d1b8ac89571d690ef506462bd 100644 index 4c73bd5aae5587e1d196a7b63fe84319cad0853d..645a8a35a9e165f656c9a2581a2325cf2598f1b4 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -100,10 +100,14 @@ public class PurpurWorldConfig { @@ -100,10 +100,14 @@ public class PurpurWorldConfig {

View File

@@ -5,19 +5,19 @@ Subject: [PATCH] Add option for boats to eject players on land
diff --git a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java diff --git a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java
index 35aeba4e8430e6419caa9db4a0b931a994228618..5e33f19193ff49d0d2119d811d8f81d0664e5cee 100644 index 35aeba4e8430e6419caa9db4a0b931a994228618..cb8443c9bc902741dfe6746baca9129214ab503b 100644
--- a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java --- a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java
+++ b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java +++ b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java
@@ -541,6 +541,7 @@ public class Boat extends Entity implements VariantHolder<Boat.Type> { @@ -541,6 +541,7 @@ public class Boat extends Entity implements VariantHolder<Boat.Type> {
if (f > 0.0F) { if (f > 0.0F) {
this.landFriction = f; this.landFriction = f;
+ if (level.purpurConfig.boatEjectPlayersOnLand) ejectPassengers(); // Purpur + if (level().purpurConfig.boatEjectPlayersOnLand) ejectPassengers(); // Purpur
return Boat.Status.ON_LAND; return Boat.Status.ON_LAND;
} else { } else {
return Boat.Status.IN_AIR; return Boat.Status.IN_AIR;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 4f46aa379b18f526c9826722b8d5fbf44cbf17d3..f1d2f1a63ea62b4475f8c4a7f55f4c491b567022 100644 index 47d0a78f47e80db7aaeacbeac6df177bd3b1fb42..0427450b37f89d6eaf90a80be1d4c8db37475b3b 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -97,12 +97,14 @@ public class PurpurWorldConfig { @@ -97,12 +97,14 @@ public class PurpurWorldConfig {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Mending mends most damages equipment first
diff --git a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java diff --git a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java
index 673327af0f77aeac0d704b0fb6bebebc76a3c966..9b122ea4a76a136719aac9910e229306128d382e 100644 index 673327af0f77aeac0d704b0fb6bebebc76a3c966..45af026f572a67061ce63229913366f719cf0a5f 100644
--- a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java --- a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java
+++ b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java +++ b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java
@@ -329,7 +329,7 @@ public class ExperienceOrb extends Entity { @@ -329,7 +329,7 @@ public class ExperienceOrb extends Entity {
@@ -13,7 +13,7 @@ index 673327af0f77aeac0d704b0fb6bebebc76a3c966..9b122ea4a76a136719aac9910e229306
private int repairPlayerItems(Player player, int amount) { private int repairPlayerItems(Player player, int amount) {
- Entry<EquipmentSlot, ItemStack> entry = EnchantmentHelper.getRandomItemWith(Enchantments.MENDING, player, ItemStack::isDamaged); - Entry<EquipmentSlot, ItemStack> entry = EnchantmentHelper.getRandomItemWith(Enchantments.MENDING, player, ItemStack::isDamaged);
+ Entry<EquipmentSlot, ItemStack> entry = level.purpurConfig.useBetterMending ? EnchantmentHelper.getMostDamagedEquipment(Enchantments.MENDING, player) : EnchantmentHelper.getRandomItemWith(Enchantments.MENDING, player, ItemStack::isDamaged); // Purpur + Entry<EquipmentSlot, ItemStack> entry = level().purpurConfig.useBetterMending ? EnchantmentHelper.getMostDamagedEquipment(Enchantments.MENDING, player) : EnchantmentHelper.getRandomItemWith(Enchantments.MENDING, player, ItemStack::isDamaged); // Purpur
if (entry != null) { if (entry != null) {
ItemStack itemstack = (ItemStack) entry.getValue(); ItemStack itemstack = (ItemStack) entry.getValue();
@@ -73,7 +73,7 @@ index ecf640b00007a386290f8dfe9935a8aa610079fd..2048899f8e4c8211e8dde0d11148d647
public static Map.Entry<EquipmentSlot, ItemStack> getRandomItemWith(Enchantment enchantment, LivingEntity entity) { public static Map.Entry<EquipmentSlot, ItemStack> getRandomItemWith(Enchantment enchantment, LivingEntity entity) {
return getRandomItemWith(enchantment, entity, (stack) -> { return getRandomItemWith(enchantment, entity, (stack) -> {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index f1d2f1a63ea62b4475f8c4a7f55f4c491b567022..0552b09400749fd9a711d081e8940f8bba0bcc8d 100644 index 0427450b37f89d6eaf90a80be1d4c8db37475b3b..3682ec40e65d1d8db52db5db53238a86b01ecaf3 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -97,6 +97,7 @@ public class PurpurWorldConfig { @@ -97,6 +97,7 @@ public class PurpurWorldConfig {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Implement elytra settings
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index 2ac30426faa256dbfac48c0accab53a9c72809b9..7126ce61f58079d924bb86ff9257d75612bcc704 100644 index 6e0250d4ae4afb73d8f6f613ec014d38552ffa6d..851bffca44dce8680a34bd5e862c1c0794806021 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -3504,7 +3504,16 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -3504,7 +3504,16 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -14,10 +14,10 @@ index 2ac30426faa256dbfac48c0accab53a9c72809b9..7126ce61f58079d924bb86ff9257d756
if (j % 2 == 0) { if (j % 2 == 0) {
- itemstack.hurtAndBreak(1, this, (entityliving) -> { - itemstack.hurtAndBreak(1, this, (entityliving) -> {
+ // Purpur start + // Purpur start
+ int damage = level.purpurConfig.elytraDamagePerSecond; + int damage = level().purpurConfig.elytraDamagePerSecond;
+ if (level.purpurConfig.elytraDamageMultiplyBySpeed > 0) { + if (level().purpurConfig.elytraDamageMultiplyBySpeed > 0) {
+ double speed = getDeltaMovement().lengthSqr(); + double speed = getDeltaMovement().lengthSqr();
+ if (speed > level.purpurConfig.elytraDamageMultiplyBySpeed) { + if (speed > level().purpurConfig.elytraDamageMultiplyBySpeed) {
+ damage *= (int) speed; + damage *= (int) speed;
+ } + }
+ } + }
@@ -54,7 +54,7 @@ index 82b0bda3e35ec2157a477e1a17b2b46baadc97d9..0fc45b1048a1c4e0dc2bd1ae0437eecb
itemStack.shrink(1); itemStack.shrink(1);
} else ((net.minecraft.server.level.ServerPlayer) user).getBukkitEntity().updateInventory(); } else ((net.minecraft.server.level.ServerPlayer) user).getBukkitEntity().updateInventory();
diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java
index 62f70729e92c63b0fc060b0f1eadeb50c298d32f..b70e57a78bbe9084746ba9a4bc896ad2b1636e8f 100644 index 62f70729e92c63b0fc060b0f1eadeb50c298d32f..961aca57888de6fe7ea249c2a7596c9863c1effe 100644
--- a/src/main/java/net/minecraft/world/item/ItemStack.java --- a/src/main/java/net/minecraft/world/item/ItemStack.java
+++ b/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java
@@ -603,7 +603,7 @@ public final class ItemStack { @@ -603,7 +603,7 @@ public final class ItemStack {
@@ -62,7 +62,7 @@ index 62f70729e92c63b0fc060b0f1eadeb50c298d32f..b70e57a78bbe9084746ba9a4bc896ad2
if (amount > 0) { if (amount > 0) {
- j = EnchantmentHelper.getItemEnchantmentLevel(Enchantments.UNBREAKING, this); - j = EnchantmentHelper.getItemEnchantmentLevel(Enchantments.UNBREAKING, this);
+ j = (getItem() == Items.ELYTRA && player != null && player.level.purpurConfig.elytraIgnoreUnbreaking) ? 0 : EnchantmentHelper.getItemEnchantmentLevel(Enchantments.UNBREAKING, this); + j = (getItem() == Items.ELYTRA && player != null && player.level().purpurConfig.elytraIgnoreUnbreaking) ? 0 : EnchantmentHelper.getItemEnchantmentLevel(Enchantments.UNBREAKING, this);
int k = 0; int k = 0;
for (int l = 0; j > 0 && l < amount; ++l) { for (int l = 0; j > 0 && l < amount; ++l) {
@@ -99,7 +99,7 @@ index 8078f127ff4b6e0aafb5804b9c02e237f79445b5..06c2f30b77a2c8aecc65e0c305f643d5
entityhuman.startAutoSpinAttack(20); entityhuman.startAutoSpinAttack(20);
if (entityhuman.onGround()) { if (entityhuman.onGround()) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 0552b09400749fd9a711d081e8940f8bba0bcc8d..d7cc6c9f15fdc29bbd1666d9a07904eea8a3d723 100644 index 3682ec40e65d1d8db52db5db53238a86b01ecaf3..999f31194d694961582df1b998fbcefc5dc7d26f 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -114,6 +114,19 @@ public class PurpurWorldConfig { @@ -114,6 +114,19 @@ public class PurpurWorldConfig {

View File

@@ -5,12 +5,12 @@ Subject: [PATCH] Configurable jockey options
diff --git a/src/main/java/net/minecraft/world/entity/monster/Drowned.java b/src/main/java/net/minecraft/world/entity/monster/Drowned.java 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 8fcda30fd2ae9882d7101b24cff70e832db1eee0..a27a0de6858aa69caefc436aec3827b365d3d00c 100644 index 3cde608a222ab2ef2b5fc7f543e97ba71e440ea9..6ec7d0f5e525f9e04b6fa0fb6d4da5fcc22fe653 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java --- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java +++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java
@@ -95,6 +95,21 @@ public class Drowned extends Zombie implements RangedAttackMob { @@ -95,6 +95,21 @@ public class Drowned extends Zombie implements RangedAttackMob {
this.getAttribute(Attributes.SPAWN_REINFORCEMENTS_CHANCE).setBaseValue(this.random.nextDouble() * this.level().purpurConfig.drownedSpawnReinforcements);
} }
// Purpur end
+ @Override + @Override
+ public boolean jockeyOnlyBaby() { + public boolean jockeyOnlyBaby() {
@@ -31,49 +31,49 @@ index 8fcda30fd2ae9882d7101b24cff70e832db1eee0..a27a0de6858aa69caefc436aec3827b3
protected void addBehaviourGoals() { protected void addBehaviourGoals() {
this.goalSelector.addGoal(1, new Drowned.DrownedGoToWaterGoal(this, 1.0D)); this.goalSelector.addGoal(1, new Drowned.DrownedGoToWaterGoal(this, 1.0D));
diff --git a/src/main/java/net/minecraft/world/entity/monster/Husk.java b/src/main/java/net/minecraft/world/entity/monster/Husk.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Husk.java b/src/main/java/net/minecraft/world/entity/monster/Husk.java
index 83fba266721f17efb92f62cc61dbecf4024fb5d6..5e7c4c7a5962e638a2026a57803263830f11d35b 100644 index 5f801b2a7d8a69a38b8e10471a29f813c8d828ad..7e46ebc5c99f018cada50f491200e4fe7b7098d7 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Husk.java --- a/src/main/java/net/minecraft/world/entity/monster/Husk.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Husk.java +++ b/src/main/java/net/minecraft/world/entity/monster/Husk.java
@@ -49,6 +49,21 @@ public class Husk extends Zombie { @@ -49,6 +49,21 @@ public class Husk extends Zombie {
this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.SPAWN_REINFORCEMENTS_CHANCE).setBaseValue(this.random.nextDouble() * this.level().purpurConfig.huskSpawnReinforcements);
} }
// Purpur end
+ @Override + @Override
+ public boolean jockeyOnlyBaby() { + public boolean jockeyOnlyBaby() {
+ return level.purpurConfig.huskJockeyOnlyBaby; + return level().purpurConfig.huskJockeyOnlyBaby;
+ } + }
+ +
+ @Override + @Override
+ public double jockeyChance() { + public double jockeyChance() {
+ return level.purpurConfig.huskJockeyChance; + return level().purpurConfig.huskJockeyChance;
+ } + }
+ +
+ @Override + @Override
+ public boolean jockeyTryExistingChickens() { + public boolean jockeyTryExistingChickens() {
+ return level.purpurConfig.huskJockeyTryExistingChickens; + return level().purpurConfig.huskJockeyTryExistingChickens;
+ } + }
+ +
public static boolean checkHuskSpawnRules(EntityType<Husk> type, ServerLevelAccessor world, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { public static boolean checkHuskSpawnRules(EntityType<Husk> type, ServerLevelAccessor world, MobSpawnType spawnReason, BlockPos pos, RandomSource random) {
return checkMonsterSpawnRules(type, world, spawnReason, pos, random) && (spawnReason == MobSpawnType.SPAWNER || world.canSeeSky(pos)); return checkMonsterSpawnRules(type, world, spawnReason, pos, random) && (spawnReason == MobSpawnType.SPAWNER || world.canSeeSky(pos));
} }
diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
index a825c0e976a6bbddc5688bfe0010f8d653f27e08..a0439eac45376c132f6a1d7142c200e9c925130c 100644 index b3a31549179760388bc2958b4339848d1f0b293d..b2b04d7b7bbc400fb66cac385fa754d4fb47c7d9 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
@@ -128,6 +128,18 @@ public class Zombie extends Monster { @@ -128,6 +128,18 @@ public class Zombie extends Monster {
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.zombieMaxHealth); this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.zombieMaxHealth);
} }
+ public boolean jockeyOnlyBaby() { + public boolean jockeyOnlyBaby() {
+ return level.purpurConfig.zombieJockeyOnlyBaby; + return level().purpurConfig.zombieJockeyOnlyBaby;
+ } + }
+ +
+ public double jockeyChance() { + public double jockeyChance() {
+ return level.purpurConfig.zombieJockeyChance; + return level().purpurConfig.zombieJockeyChance;
+ } + }
+ +
+ public boolean jockeyTryExistingChickens() { + public boolean jockeyTryExistingChickens() {
+ return level.purpurConfig.zombieJockeyTryExistingChickens; + return level().purpurConfig.zombieJockeyTryExistingChickens;
+ } + }
+ +
@Override @Override
@@ -115,72 +115,72 @@ index a825c0e976a6bbddc5688bfe0010f8d653f27e08..a0439eac45376c132f6a1d7142c200e9
} }
} }
diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java
index 0f42ae8062d2e3044accbc7fa296be9ae7ca7605..b0b39609a50ac0a7dade15651f5f33ff2b426e5a 100644 index c89680f83275169728f923e70a17cb88d4480f01..6f3667751e430ff6020a9a26f82a25e4ec043ce6 100644
--- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java --- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java
+++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java
@@ -106,6 +106,21 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { @@ -106,6 +106,21 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder {
this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.SPAWN_REINFORCEMENTS_CHANCE).setBaseValue(this.random.nextDouble() * this.level().purpurConfig.zombieVillagerSpawnReinforcements);
} }
// Purpur end
+ @Override + @Override
+ public boolean jockeyOnlyBaby() { + public boolean jockeyOnlyBaby() {
+ return level.purpurConfig.zombieVillagerJockeyOnlyBaby; + return level().purpurConfig.zombieVillagerJockeyOnlyBaby;
+ } + }
+ +
+ @Override + @Override
+ public double jockeyChance() { + public double jockeyChance() {
+ return level.purpurConfig.zombieVillagerJockeyChance; + return level().purpurConfig.zombieVillagerJockeyChance;
+ } + }
+ +
+ @Override + @Override
+ public boolean jockeyTryExistingChickens() { + public boolean jockeyTryExistingChickens() {
+ return level.purpurConfig.zombieVillagerJockeyTryExistingChickens; + return level().purpurConfig.zombieVillagerJockeyTryExistingChickens;
+ } + }
+ +
@Override @Override
protected void defineSynchedData() { protected void defineSynchedData() {
super.defineSynchedData(); super.defineSynchedData();
diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java
index 468923229dfda00eb704040461f8639bfa5082a7..0f53ab48bb28188400c7b420cd79ea202c8f5746 100644 index 8f22bfcde4bb8ad73794f2b98b156113e5a2a6c9..3d61b27c23d90e87fdfc8c170eafc116716ac047 100644
--- a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java --- a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java
+++ b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java
@@ -85,6 +85,21 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { @@ -85,6 +85,21 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob {
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.zombifiedPiglinMaxHealth);
} }
// Purpur end
+ @Override + @Override
+ public boolean jockeyOnlyBaby() { + public boolean jockeyOnlyBaby() {
+ return level.purpurConfig.zombifiedPiglinJockeyOnlyBaby; + return level().purpurConfig.zombifiedPiglinJockeyOnlyBaby;
+ } + }
+ +
+ @Override + @Override
+ public double jockeyChance() { + public double jockeyChance() {
+ return level.purpurConfig.zombifiedPiglinJockeyChance; + return level().purpurConfig.zombifiedPiglinJockeyChance;
+ } + }
+ +
+ @Override + @Override
+ public boolean jockeyTryExistingChickens() { + public boolean jockeyTryExistingChickens() {
+ return level.purpurConfig.zombifiedPiglinJockeyTryExistingChickens; + return level().purpurConfig.zombifiedPiglinJockeyTryExistingChickens;
+ } + }
+ +
@Override @Override
public void setPersistentAngerTarget(@Nullable UUID angryAt) { public void setPersistentAngerTarget(@Nullable UUID angryAt) {
this.persistentAngerTarget = angryAt; this.persistentAngerTarget = angryAt;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index ee354de33f436dde6a234c05787a9de28966d7cf..472514b9e6fcbb696ac89ac11b04a6ddc84cfb7c 100644 index 028344830eeb29090ea684b9c20eaf0d9884c9ce..df8f8dcf6e47710b289df1996b571781009c9c00 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -490,6 +490,9 @@ public class PurpurWorldConfig { @@ -572,6 +572,9 @@ public class PurpurWorldConfig {
public boolean drownedControllable = true;
public double drownedMaxHealth = 20.0D; public double drownedMaxHealth = 20.0D;
public double drownedSpawnReinforcements = 0.1D; public double drownedSpawnReinforcements = 0.1D;
+ public boolean drownedJockeyOnlyBaby = true; + public boolean drownedJockeyOnlyBaby = true;
+ public double drownedJockeyChance = 0.05D; + public double drownedJockeyChance = 0.05D;
+ public boolean drownedJockeyTryExistingChickens = true; + public boolean drownedJockeyTryExistingChickens = true;
private void drownedSettings() { private void drownedSettings() {
if (PurpurConfig.version < 10) { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable);
double oldValue = getDouble("mobs.drowned.attributes.max-health", drownedMaxHealth); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater);
@@ -498,6 +501,9 @@ public class PurpurWorldConfig { @@ -583,6 +586,9 @@ public class PurpurWorldConfig {
} }
drownedMaxHealth = getDouble("mobs.drowned.attributes.max_health", drownedMaxHealth); drownedMaxHealth = getDouble("mobs.drowned.attributes.max_health", drownedMaxHealth);
drownedSpawnReinforcements = getDouble("mobs.drowned.attributes.spawn_reinforcements", drownedSpawnReinforcements); drownedSpawnReinforcements = getDouble("mobs.drowned.attributes.spawn_reinforcements", drownedSpawnReinforcements);
@@ -189,18 +189,18 @@ index ee354de33f436dde6a234c05787a9de28966d7cf..472514b9e6fcbb696ac89ac11b04a6dd
+ drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens); + drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens);
} }
public double elderGuardianMaxHealth = 80.0D; public double camelMaxHealthMin = 32.0D;
@@ -660,6 +666,9 @@ public class PurpurWorldConfig { @@ -846,6 +852,9 @@ public class PurpurWorldConfig {
public boolean huskControllable = true;
public double huskMaxHealth = 20.0D; public double huskMaxHealth = 20.0D;
public double huskSpawnReinforcements = 0.1D; public double huskSpawnReinforcements = 0.1D;
+ public boolean huskJockeyOnlyBaby = true; + public boolean huskJockeyOnlyBaby = true;
+ public double huskJockeyChance = 0.05D; + public double huskJockeyChance = 0.05D;
+ public boolean huskJockeyTryExistingChickens = true; + public boolean huskJockeyTryExistingChickens = true;
private void huskSettings() { private void huskSettings() {
if (PurpurConfig.version < 10) { huskRidable = getBoolean("mobs.husk.ridable", huskRidable);
double oldValue = getDouble("mobs.husk.attributes.max-health", huskMaxHealth); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater);
@@ -668,6 +677,9 @@ public class PurpurWorldConfig { @@ -857,6 +866,9 @@ public class PurpurWorldConfig {
} }
huskMaxHealth = getDouble("mobs.husk.attributes.max_health", huskMaxHealth); huskMaxHealth = getDouble("mobs.husk.attributes.max_health", huskMaxHealth);
huskSpawnReinforcements = getDouble("mobs.husk.attributes.spawn_reinforcements", huskSpawnReinforcements); huskSpawnReinforcements = getDouble("mobs.husk.attributes.spawn_reinforcements", huskSpawnReinforcements);
@@ -209,18 +209,18 @@ index ee354de33f436dde6a234c05787a9de28966d7cf..472514b9e6fcbb696ac89ac11b04a6dd
+ huskJockeyTryExistingChickens = getBoolean("mobs.husk.jockey.try-existing-chickens", huskJockeyTryExistingChickens); + huskJockeyTryExistingChickens = getBoolean("mobs.husk.jockey.try-existing-chickens", huskJockeyTryExistingChickens);
} }
public double illusionerMovementSpeed = 0.5D; public boolean illusionerRidable = false;
@@ -1211,6 +1223,9 @@ public class PurpurWorldConfig { @@ -1676,6 +1688,9 @@ public class PurpurWorldConfig {
public boolean zombieControllable = true;
public double zombieMaxHealth = 20.0D; public double zombieMaxHealth = 20.0D;
public double zombieSpawnReinforcements = 0.1D; public double zombieSpawnReinforcements = 0.1D;
+ public boolean zombieJockeyOnlyBaby = true; + public boolean zombieJockeyOnlyBaby = true;
+ public double zombieJockeyChance = 0.05D; + public double zombieJockeyChance = 0.05D;
+ public boolean zombieJockeyTryExistingChickens = true; + public boolean zombieJockeyTryExistingChickens = true;
private void zombieSettings() { private void zombieSettings() {
if (PurpurConfig.version < 10) { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable);
double oldValue = getDouble("mobs.zombie.attributes.max-health", zombieMaxHealth); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater);
@@ -1219,6 +1234,9 @@ public class PurpurWorldConfig { @@ -1687,6 +1702,9 @@ public class PurpurWorldConfig {
} }
zombieMaxHealth = getDouble("mobs.zombie.attributes.max_health", zombieMaxHealth); zombieMaxHealth = getDouble("mobs.zombie.attributes.max_health", zombieMaxHealth);
zombieSpawnReinforcements = getDouble("mobs.zombie.attributes.spawn_reinforcements", zombieSpawnReinforcements); zombieSpawnReinforcements = getDouble("mobs.zombie.attributes.spawn_reinforcements", zombieSpawnReinforcements);
@@ -229,35 +229,35 @@ index ee354de33f436dde6a234c05787a9de28966d7cf..472514b9e6fcbb696ac89ac11b04a6dd
+ zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens); + zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens);
} }
public double zombieHorseMaxHealthMin = 15.0D; public boolean zombieHorseRidableInWater = false;
@@ -1246,6 +1264,9 @@ public class PurpurWorldConfig { @@ -1723,10 +1741,16 @@ public class PurpurWorldConfig {
public boolean zombieVillagerRidable = false;
public double zombieVillagerMaxHealth = 20.0D; public boolean zombieVillagerRidableInWater = true;
public double zombieVillagerSpawnReinforcements = 0.1D; public boolean zombieVillagerControllable = true;
+ public boolean zombieVillagerJockeyOnlyBaby = true; + public boolean zombieVillagerJockeyOnlyBaby = true;
+ public double zombieVillagerJockeyChance = 0.05D; + public double zombieVillagerJockeyChance = 0.05D;
+ public boolean zombieVillagerJockeyTryExistingChickens = true; + public boolean zombieVillagerJockeyTryExistingChickens = true;
private void zombieVillagerSettings() { private void zombieVillagerSettings() {
if (PurpurConfig.version < 10) { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable);
double oldValue = getDouble("mobs.zombie_villager.attributes.max-health", zombieVillagerMaxHealth); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater);
@@ -1254,10 +1275,16 @@ public class PurpurWorldConfig { zombieVillagerControllable = getBoolean("mobs.zombie_villager.controllable", zombieVillagerControllable);
}
zombieVillagerMaxHealth = getDouble("mobs.zombie_villager.attributes.max_health", zombieVillagerMaxHealth);
zombieVillagerSpawnReinforcements = getDouble("mobs.zombie_villager.attributes.spawn_reinforcements", zombieVillagerSpawnReinforcements);
+ zombieVillagerJockeyOnlyBaby = getBoolean("mobs.zombie_villager.jockey.only-babies", zombieVillagerJockeyOnlyBaby); + zombieVillagerJockeyOnlyBaby = getBoolean("mobs.zombie_villager.jockey.only-babies", zombieVillagerJockeyOnlyBaby);
+ zombieVillagerJockeyChance = getDouble("mobs.zombie_villager.jockey.chance", zombieVillagerJockeyChance); + zombieVillagerJockeyChance = getDouble("mobs.zombie_villager.jockey.chance", zombieVillagerJockeyChance);
+ zombieVillagerJockeyTryExistingChickens = getBoolean("mobs.zombie_villager.jockey.try-existing-chickens", zombieVillagerJockeyTryExistingChickens); + zombieVillagerJockeyTryExistingChickens = getBoolean("mobs.zombie_villager.jockey.try-existing-chickens", zombieVillagerJockeyTryExistingChickens);
} }
public boolean zombifiedPiglinRidable = false;
@@ -1734,6 +1758,9 @@ public class PurpurWorldConfig {
public boolean zombifiedPiglinControllable = true;
public double zombifiedPiglinMaxHealth = 20.0D; public double zombifiedPiglinMaxHealth = 20.0D;
public double zombifiedPiglinSpawnReinforcements = 0.0D; public double zombifiedPiglinSpawnReinforcements = 0.0D;
+ public boolean zombifiedPiglinJockeyOnlyBaby = true; + public boolean zombifiedPiglinJockeyOnlyBaby = true;
+ public double zombifiedPiglinJockeyChance = 0.05D; + public double zombifiedPiglinJockeyChance = 0.05D;
+ public boolean zombifiedPiglinJockeyTryExistingChickens = true; + public boolean zombifiedPiglinJockeyTryExistingChickens = true;
private void zombifiedPiglinSettings() { private void zombifiedPiglinSettings() {
if (PurpurConfig.version < 10) { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable);
double oldValue = getDouble("mobs.zombified_piglin.attributes.max-health", zombifiedPiglinMaxHealth); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater);
@@ -1266,6 +1293,9 @@ public class PurpurWorldConfig { @@ -1745,5 +1772,8 @@ public class PurpurWorldConfig {
} }
zombifiedPiglinMaxHealth = getDouble("mobs.zombified_piglin.attributes.max_health", zombifiedPiglinMaxHealth); zombifiedPiglinMaxHealth = getDouble("mobs.zombified_piglin.attributes.max_health", zombifiedPiglinMaxHealth);
zombifiedPiglinSpawnReinforcements = getDouble("mobs.zombified_piglin.attributes.spawn_reinforcements", zombifiedPiglinSpawnReinforcements); zombifiedPiglinSpawnReinforcements = getDouble("mobs.zombified_piglin.attributes.spawn_reinforcements", zombifiedPiglinSpawnReinforcements);
@@ -265,5 +265,4 @@ index ee354de33f436dde6a234c05787a9de28966d7cf..472514b9e6fcbb696ac89ac11b04a6dd
+ zombifiedPiglinJockeyChance = getDouble("mobs.zombified_piglin.jockey.chance", zombifiedPiglinJockeyChance); + zombifiedPiglinJockeyChance = getDouble("mobs.zombified_piglin.jockey.chance", zombifiedPiglinJockeyChance);
+ zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens); + zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens);
} }
}
public boolean babiesAreRidable = true;

View File

@@ -40,10 +40,10 @@ index bc7648dbc132551dc6591ab49a1919a623c30f60..5b880677c895d0e747a1ed6a380ae356
for (int l = 0; l < k; ++l) { for (int l = 0; l < k; ++l) {
// Paper start // Paper start
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 472514b9e6fcbb696ac89ac11b04a6ddc84cfb7c..fa7bafbba960f987f4dac7a12fd3014efa8eebdb 100644 index df8f8dcf6e47710b289df1996b571781009c9c00..930f6267cd90ebaee1a5819bcb67f81528692377 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -820,6 +820,12 @@ public class PurpurWorldConfig { @@ -1067,6 +1067,12 @@ public class PurpurWorldConfig {
public String phantomAttackDamage = "6 + size"; public String phantomAttackDamage = "6 + size";
public Map<Integer, Double> phantomMaxHealthCache = new HashMap<>(); public Map<Integer, Double> phantomMaxHealthCache = new HashMap<>();
public Map<Integer, Double> phantomAttackDamageCache = new HashMap<>(); public Map<Integer, Double> phantomAttackDamageCache = new HashMap<>();
@@ -54,9 +54,9 @@ index 472514b9e6fcbb696ac89ac11b04a6ddc84cfb7c..fa7bafbba960f987f4dac7a12fd3014e
+ public int phantomSpawnMinPerAttempt = 1; + public int phantomSpawnMinPerAttempt = 1;
+ public int phantomSpawnMaxPerAttempt = -1; + public int phantomSpawnMaxPerAttempt = -1;
private void phantomSettings() { private void phantomSettings() {
if (PurpurConfig.version < 10) { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable);
double oldValue = getDouble("mobs.phantom.attributes.max-health", Double.parseDouble(phantomMaxHealth)); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater);
@@ -834,6 +840,12 @@ public class PurpurWorldConfig { @@ -1088,6 +1094,12 @@ public class PurpurWorldConfig {
phantomAttackDamage = getString("mobs.phantom.attributes.attack_damage", phantomAttackDamage); phantomAttackDamage = getString("mobs.phantom.attributes.attack_damage", phantomAttackDamage);
phantomMaxHealthCache.clear(); phantomMaxHealthCache.clear();
phantomAttackDamageCache.clear(); phantomAttackDamageCache.clear();
@@ -68,4 +68,4 @@ index 472514b9e6fcbb696ac89ac11b04a6ddc84cfb7c..fa7bafbba960f987f4dac7a12fd3014e
+ phantomSpawnMaxPerAttempt = getInt("mobs.phantom.spawn.per-attempt.max", phantomSpawnMaxPerAttempt); + phantomSpawnMaxPerAttempt = getInt("mobs.phantom.spawn.per-attempt.max", phantomSpawnMaxPerAttempt);
} }
public double pigMaxHealth = 10.0D; public boolean pigRidable = false;

View File

@@ -5,27 +5,27 @@ Subject: [PATCH] Squid EAR immunity
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index e62c71804a0595574e49cd08ce11eee52eab7479..31ff1a1e9f57f6d5bef77dc1038b5bc51a53ac6f 100644 index e31a46078056a559bfbdecd8d86b974bf372273e..8c2241cd2670ff4d945d3953dcc227cc63d5b7e0 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1097,6 +1097,7 @@ public class PurpurWorldConfig { @@ -1449,6 +1449,7 @@ public class PurpurWorldConfig {
} public boolean squidRidable = false;
public boolean squidControllable = true;
public double squidMaxHealth = 10.0D; public double squidMaxHealth = 10.0D;
+ public boolean squidImmuneToEAR = true; + public boolean squidImmuneToEAR = true;
private void squidSettings() { private void squidSettings() {
if (PurpurConfig.version < 10) { squidRidable = getBoolean("mobs.squid.ridable", squidRidable);
double oldValue = getDouble("mobs.squid.attributes.max-health", squidMaxHealth); squidControllable = getBoolean("mobs.squid.controllable", squidControllable);
@@ -1104,6 +1105,7 @@ public class PurpurWorldConfig { @@ -1458,6 +1459,7 @@ public class PurpurWorldConfig {
set("mobs.squid.attributes.max_health", oldValue); set("mobs.squid.attributes.max_health", oldValue);
} }
squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth);
+ squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); + squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR);
} }
public double spiderMaxHealth = 16.0D; public boolean spiderRidable = false;
diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java
index ea978171f89ac467b235f66fd539b957ba73e371..532a57c612891420a9d51b425504e46ca751b760 100644 index cd2ec0b11f74e2b17f74ebb83f4e8b183f5b890e..17f99670d7e3dfb4a2863722eedc60dcfd73729d 100644
--- a/src/main/java/org/spigotmc/ActivationRange.java --- a/src/main/java/org/spigotmc/ActivationRange.java
+++ b/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java
@@ -15,6 +15,7 @@ import net.minecraft.world.entity.ambient.AmbientCreature; @@ -15,6 +15,7 @@ import net.minecraft.world.entity.ambient.AmbientCreature;
@@ -40,7 +40,7 @@ index ea978171f89ac467b235f66fd539b957ba73e371..532a57c612891420a9d51b425504e46c
*/ */
public static boolean checkIfActive(Entity entity) public static boolean checkIfActive(Entity entity)
{ {
+ if (entity.level.purpurConfig.squidImmuneToEAR && entity instanceof Squid) return true; // Purpur + if (entity.level().purpurConfig.squidImmuneToEAR && entity instanceof Squid) return true; // Purpur
// Never safe to skip fireworks or entities not yet added to chunk // Never safe to skip fireworks or entities not yet added to chunk
if ( entity instanceof FireworkRocketEntity ) { if ( entity instanceof FireworkRocketEntity ) {
return true; return true;

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Phantoms burn in light
diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java
index 5a44bead0ad10deb4ec7d90c86305ae178632e6c..b230733d72843f3142c26cc7d0e9bf93054fc628 100644 index cd6a25bb101555d6c763a7023d1b05691e671b5f..67aa490540d264775d8a8382cb5922f365ca6913 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java
@@ -49,6 +49,7 @@ public class Phantom extends FlyingMob implements Enemy { @@ -49,6 +49,7 @@ public class Phantom extends FlyingMob implements Enemy {
@@ -22,8 +22,8 @@ index 5a44bead0ad10deb4ec7d90c86305ae178632e6c..b230733d72843f3142c26cc7d0e9bf93
public void aiStep() { public void aiStep() {
- if (this.isAlive() && shouldBurnInDay && this.isSunBurnTick()) { // Paper - Configurable Burning - if (this.isAlive() && shouldBurnInDay && this.isSunBurnTick()) { // Paper - Configurable Burning
+ // Purpur start + // Purpur start
+ boolean burnFromDaylight = this.shouldBurnInDay && this.level.purpurConfig.phantomBurnInDaylight; + boolean burnFromDaylight = this.shouldBurnInDay && this.level().purpurConfig.phantomBurnInDaylight;
+ boolean burnFromLightSource = this.level.purpurConfig.phantomBurnInLight > 0 && this.level.getMaxLocalRawBrightness(blockPosition()) >= this.level.purpurConfig.phantomBurnInLight; + boolean burnFromLightSource = this.level().purpurConfig.phantomBurnInLight > 0 && this.level.getMaxLocalRawBrightness(blockPosition()) >= this.level().purpurConfig.phantomBurnInLight;
+ if (this.isAlive() && (burnFromDaylight || burnFromLightSource)) { // Paper - Configurable Burning + if (this.isAlive() && (burnFromDaylight || burnFromLightSource)) { // Paper - Configurable Burning
+ if (getRider() == null || !this.isControllable()) + if (getRider() == null || !this.isControllable())
+ // Purpur end + // Purpur end
@@ -35,9 +35,9 @@ index 5a44bead0ad10deb4ec7d90c86305ae178632e6c..b230733d72843f3142c26cc7d0e9bf93
} else if (!entityliving.isAlive()) { } else if (!entityliving.isAlive()) {
return false; return false;
+ // Purpur start + // Purpur start
+ } else if (level.purpurConfig.phantomBurnInLight > 0 && level.getLightEmission(new BlockPos(Phantom.this)) >= level.purpurConfig.phantomBurnInLight) { + } else if (level().purpurConfig.phantomBurnInLight > 0 && level.getLightEmission(new BlockPos(Phantom.this)) >= level().purpurConfig.phantomBurnInLight) {
+ return false; + return false;
+ } else if (level.purpurConfig.phantomIgnorePlayersWithTorch && (TORCH.test(entityliving.getItemInHand(net.minecraft.world.InteractionHand.MAIN_HAND)) || TORCH.test(entityliving.getItemInHand(net.minecraft.world.InteractionHand.OFF_HAND)))) { + } else if (level().purpurConfig.phantomIgnorePlayersWithTorch && (TORCH.test(entityliving.getItemInHand(net.minecraft.world.InteractionHand.MAIN_HAND)) || TORCH.test(entityliving.getItemInHand(net.minecraft.world.InteractionHand.OFF_HAND)))) {
+ return false; + return false;
+ // Purpur end + // Purpur end
} else { } else {
@@ -47,15 +47,15 @@ index 5a44bead0ad10deb4ec7d90c86305ae178632e6c..b230733d72843f3142c26cc7d0e9bf93
this.nextScanTick = reducedTickDelay(60); this.nextScanTick = reducedTickDelay(60);
List<Player> list = Phantom.this.level().getNearbyPlayers(this.attackTargeting, Phantom.this, Phantom.this.getBoundingBox().inflate(16.0D, 64.0D, 16.0D)); List<Player> list = Phantom.this.level().getNearbyPlayers(this.attackTargeting, Phantom.this, Phantom.this.getBoundingBox().inflate(16.0D, 64.0D, 16.0D));
+ if (level.purpurConfig.phantomIgnorePlayersWithTorch) list.removeIf(human -> TORCH.test(human.getItemInHand(net.minecraft.world.InteractionHand.MAIN_HAND)) || TORCH.test(human.getItemInHand(net.minecraft.world.InteractionHand.OFF_HAND)));// Purpur + if (level().purpurConfig.phantomIgnorePlayersWithTorch) list.removeIf(human -> TORCH.test(human.getItemInHand(net.minecraft.world.InteractionHand.MAIN_HAND)) || TORCH.test(human.getItemInHand(net.minecraft.world.InteractionHand.OFF_HAND)));// Purpur
if (!list.isEmpty()) { if (!list.isEmpty()) {
list.sort(Comparator.comparing((Entity e) -> { return e.getY(); }).reversed()); // CraftBukkit - decompile error list.sort(Comparator.comparing((Entity e) -> { return e.getY(); }).reversed()); // CraftBukkit - decompile error
Iterator iterator = list.iterator(); Iterator iterator = list.iterator();
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 31ff1a1e9f57f6d5bef77dc1038b5bc51a53ac6f..4f5f144127787b5deaca89f5fa97551c8caf4c28 100644 index 8c2241cd2670ff4d945d3953dcc227cc63d5b7e0..93aaa9d4413e10af4cb1fca15bc9627a7ded3955 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -875,6 +875,9 @@ public class PurpurWorldConfig { @@ -1122,6 +1122,9 @@ public class PurpurWorldConfig {
public double phantomSpawnLocalDifficultyChance = 3.0D; public double phantomSpawnLocalDifficultyChance = 3.0D;
public int phantomSpawnMinPerAttempt = 1; public int phantomSpawnMinPerAttempt = 1;
public int phantomSpawnMaxPerAttempt = -1; public int phantomSpawnMaxPerAttempt = -1;
@@ -63,9 +63,9 @@ index 31ff1a1e9f57f6d5bef77dc1038b5bc51a53ac6f..4f5f144127787b5deaca89f5fa97551c
+ public boolean phantomIgnorePlayersWithTorch = false; + public boolean phantomIgnorePlayersWithTorch = false;
+ public boolean phantomBurnInDaylight = true; + public boolean phantomBurnInDaylight = true;
private void phantomSettings() { private void phantomSettings() {
if (PurpurConfig.version < 10) { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable);
double oldValue = getDouble("mobs.phantom.attributes.max-health", Double.parseDouble(phantomMaxHealth)); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater);
@@ -895,6 +898,9 @@ public class PurpurWorldConfig { @@ -1149,6 +1152,9 @@ public class PurpurWorldConfig {
phantomSpawnLocalDifficultyChance = getDouble("mobs.phantom.spawn.local-difficulty-chance", phantomSpawnLocalDifficultyChance); phantomSpawnLocalDifficultyChance = getDouble("mobs.phantom.spawn.local-difficulty-chance", phantomSpawnLocalDifficultyChance);
phantomSpawnMinPerAttempt = getInt("mobs.phantom.spawn.per-attempt.min", phantomSpawnMinPerAttempt); phantomSpawnMinPerAttempt = getInt("mobs.phantom.spawn.per-attempt.min", phantomSpawnMinPerAttempt);
phantomSpawnMaxPerAttempt = getInt("mobs.phantom.spawn.per-attempt.max", phantomSpawnMaxPerAttempt); phantomSpawnMaxPerAttempt = getInt("mobs.phantom.spawn.per-attempt.max", phantomSpawnMaxPerAttempt);
@@ -74,4 +74,4 @@ index 31ff1a1e9f57f6d5bef77dc1038b5bc51a53ac6f..4f5f144127787b5deaca89f5fa97551c
+ phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch); + phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch);
} }
public double pigMaxHealth = 10.0D; public boolean pigRidable = false;

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Configurable villager breeding
diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java
index e258d5b83e5cb517b9fe2e2818391f0666cacd84..26d7b7de2dc2b59224311bc9541a5f0f0f386277 100644 index 813b9708d218589afaaa2d0578affcc78f0c075f..52a84f354cc51b3ca875756514588b2e6309fc25 100644
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
@@ -779,7 +779,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -779,7 +779,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
@@ -13,27 +13,27 @@ index e258d5b83e5cb517b9fe2e2818391f0666cacd84..26d7b7de2dc2b59224311bc9541a5f0f
@Override @Override
public boolean canBreed() { public boolean canBreed() {
- return this.foodLevel + this.countFoodPointsInInventory() >= 12 && !this.isSleeping() && this.getAge() == 0; - return this.foodLevel + this.countFoodPointsInInventory() >= 12 && !this.isSleeping() && this.getAge() == 0;
+ return this.level.purpurConfig.villagerCanBreed && this.foodLevel + this.countFoodPointsInInventory() >= 12 && !this.isSleeping() && this.getAge() == 0; // Purpur + return this.level().purpurConfig.villagerCanBreed && this.foodLevel + this.countFoodPointsInInventory() >= 12 && !this.isSleeping() && this.getAge() == 0; // Purpur
} }
private boolean hungry() { private boolean hungry() {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 4f5f144127787b5deaca89f5fa97551c8caf4c28..da232210c18f9389dd51a30f4bf72b4e913513c2 100644 index 93aaa9d4413e10af4cb1fca15bc9627a7ded3955..a5d7a2e70068b08b49e7ccddbe222ca808f693b7 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1201,6 +1201,7 @@ public class PurpurWorldConfig { @@ -1607,6 +1607,7 @@ public class PurpurWorldConfig {
public double villagerMaxHealth = 20.0D; public double villagerMaxHealth = 20.0D;
public boolean villagerFollowEmeraldBlock = false; public boolean villagerFollowEmeraldBlock = false;
public boolean villagerCanBeLeashed = false; public boolean villagerCanBeLeashed = false;
+ public boolean villagerCanBreed = true; + public boolean villagerCanBreed = true;
private void villagerSettings() { private void villagerSettings() {
if (PurpurConfig.version < 10) { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
double oldValue = getDouble("mobs.villager.attributes.max-health", villagerMaxHealth); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
@@ -1210,6 +1211,7 @@ public class PurpurWorldConfig { @@ -1619,6 +1620,7 @@ public class PurpurWorldConfig {
villagerMaxHealth = getDouble("mobs.villager.attributes.max_health", villagerMaxHealth); villagerMaxHealth = getDouble("mobs.villager.attributes.max_health", villagerMaxHealth);
villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock); villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock);
villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed);
+ villagerCanBreed = getBoolean("mobs.villager.can-breed", villagerCanBreed); + villagerCanBreed = getBoolean("mobs.villager.can-breed", villagerCanBreed);
} }
public double vindicatorMaxHealth = 24.0D; public boolean vindicatorRidable = false;

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Totems work in inventory
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index 637d90f2f5e9f8807516a757ef82d5b2014c752b..1d0d22c9d3b8c907502b8fb044ebf8c5c49f6885 100644 index 20b3b2deae7b72cc16f5e47ad73fab4d9779d047..27df4e881e850a73947651ce7ad98df5159f4c1c 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -1592,6 +1592,18 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -1592,6 +1592,18 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -13,7 +13,7 @@ index 637d90f2f5e9f8807516a757ef82d5b2014c752b..1d0d22c9d3b8c907502b8fb044ebf8c5
} }
+ // Purpur start + // Purpur start
+ if (level.purpurConfig.totemOfUndyingWorksInInventory && this instanceof ServerPlayer player && (itemstack == null || itemstack.getItem() != Items.TOTEM_OF_UNDYING) && player.getBukkitEntity().hasPermission("purpur.inventory_totem")) { + if (level().purpurConfig.totemOfUndyingWorksInInventory && this instanceof ServerPlayer player && (itemstack == null || itemstack.getItem() != Items.TOTEM_OF_UNDYING) && player.getBukkitEntity().hasPermission("purpur.inventory_totem")) {
+ for (ItemStack item : player.getInventory().items) { + for (ItemStack item : player.getInventory().items) {
+ if (item.getItem() == Items.TOTEM_OF_UNDYING) { + if (item.getItem() == Items.TOTEM_OF_UNDYING) {
+ itemstack1 = item; + itemstack1 = item;
@@ -28,7 +28,7 @@ index 637d90f2f5e9f8807516a757ef82d5b2014c752b..1d0d22c9d3b8c907502b8fb044ebf8c5
EntityResurrectEvent event = new EntityResurrectEvent((org.bukkit.entity.LivingEntity) this.getBukkitEntity(), handSlot); EntityResurrectEvent event = new EntityResurrectEvent((org.bukkit.entity.LivingEntity) this.getBukkitEntity(), handSlot);
event.setCancelled(itemstack == null); event.setCancelled(itemstack == null);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index bb136d077690654a8fa62a2aad73134487d07bd9..37f72c2812c8041a36fd7ec117e9274a8f2817c0 100644 index 1a880d0a1235fc223ca3a84e2695cd8c0dccfdee..e59f52a32f6300f5d2048a27bfa590f26432cdd0 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -247,6 +247,7 @@ public class PurpurWorldConfig { @@ -247,6 +247,7 @@ public class PurpurWorldConfig {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Add vindicator johnny spawn chance
diff --git a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java
index fdbcf72f35b6801fed4db127710a72579c823fe1..db832e9c8287d0f62db65ff3a2d2625541758762 100644 index 40858ac2a9b58108472748d0ef2c2fd5ef5cfd98..2a5b6b94b15bf066b5722e7a4f782bc87f9debf4 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java --- a/src/main/java/net/minecraft/world/entity/monster/Vindicator.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java +++ b/src/main/java/net/minecraft/world/entity/monster/Vindicator.java
@@ -154,6 +154,12 @@ public class Vindicator extends AbstractIllager { @@ -154,6 +154,12 @@ public class Vindicator extends AbstractIllager {
@@ -14,7 +14,7 @@ index fdbcf72f35b6801fed4db127710a72579c823fe1..db832e9c8287d0f62db65ff3a2d26255
this.populateDefaultEquipmentEnchantments(randomSource, difficulty); this.populateDefaultEquipmentEnchantments(randomSource, difficulty);
+ // Purpur start + // Purpur start
+ Level level = world.getMinecraftWorld(); + Level level = world.getMinecraftWorld();
+ if (level.purpurConfig.vindicatorJohnnySpawnChance > 0D && random.nextDouble() <= level.purpurConfig.vindicatorJohnnySpawnChance) { + if (level().purpurConfig.vindicatorJohnnySpawnChance > 0D && random.nextDouble() <= level().purpurConfig.vindicatorJohnnySpawnChance) {
+ setCustomName(Component.translatable("Johnny")); + setCustomName(Component.translatable("Johnny"));
+ } + }
+ // Purpur end + // Purpur end
@@ -22,22 +22,22 @@ index fdbcf72f35b6801fed4db127710a72579c823fe1..db832e9c8287d0f62db65ff3a2d26255
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 37f72c2812c8041a36fd7ec117e9274a8f2817c0..2af26908978d364e24a6ebbd2ac3a7456f2d0cc3 100644 index e59f52a32f6300f5d2048a27bfa590f26432cdd0..66162ef0ed12cd0bc4c705758dbbca19c3952d19 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1222,6 +1222,7 @@ public class PurpurWorldConfig { @@ -1634,6 +1634,7 @@ public class PurpurWorldConfig {
} public boolean vindicatorRidableInWater = true;
public boolean vindicatorControllable = true;
public double vindicatorMaxHealth = 24.0D; public double vindicatorMaxHealth = 24.0D;
+ public double vindicatorJohnnySpawnChance = 0D; + public double vindicatorJohnnySpawnChance = 0D;
private void vindicatorSettings() { private void vindicatorSettings() {
if (PurpurConfig.version < 10) { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable);
double oldValue = getDouble("mobs.vindicator.attributes.max-health", vindicatorMaxHealth); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater);
@@ -1229,6 +1230,7 @@ public class PurpurWorldConfig { @@ -1644,6 +1645,7 @@ public class PurpurWorldConfig {
set("mobs.vindicator.attributes.max_health", oldValue); set("mobs.vindicator.attributes.max_health", oldValue);
} }
vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth);
+ vindicatorJohnnySpawnChance = getDouble("mobs.vindicator.johnny.spawn-chance", vindicatorJohnnySpawnChance); + vindicatorJohnnySpawnChance = getDouble("mobs.vindicator.johnny.spawn-chance", vindicatorJohnnySpawnChance);
} }
public double wanderingTraderMaxHealth = 20.0D; public boolean wanderingTraderRidable = false;

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Dispensers place anvils option
diff --git a/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java b/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java diff --git a/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java b/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java
index b4f5dbe9022dd20437c15c4f6fbe2ac06dacbadb..b52a9f05ada86f2d3767dd0d5ba8705e22f105d6 100644 index b4f5dbe9022dd20437c15c4f6fbe2ac06dacbadb..58ee591dc4c5ae6e02dcff3d49d6a82f68e1ceb7 100644
--- a/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java --- a/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java
+++ b/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java +++ b/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java
@@ -52,6 +52,7 @@ import net.minecraft.world.item.SpawnEggItem; @@ -52,6 +52,7 @@ import net.minecraft.world.item.SpawnEggItem;
@@ -25,7 +25,7 @@ index b4f5dbe9022dd20437c15c4f6fbe2ac06dacbadb..b52a9f05ada86f2d3767dd0d5ba8705e
+ @Override + @Override
+ public ItemStack execute(BlockSource dispenser, ItemStack stack) { + public ItemStack execute(BlockSource dispenser, ItemStack stack) {
+ Level level = dispenser.getLevel(); + Level level = dispenser.getLevel();
+ if (!level.purpurConfig.dispenserPlaceAnvils) return super.execute(dispenser, stack); + if (!level().purpurConfig.dispenserPlaceAnvils) return super.execute(dispenser, stack);
+ Direction facing = dispenser.getBlockState().getValue(DispenserBlock.FACING); + Direction facing = dispenser.getBlockState().getValue(DispenserBlock.FACING);
+ BlockPos pos = dispenser.getPos().relative(facing); + BlockPos pos = dispenser.getPos().relative(facing);
+ BlockState state = level.getBlockState(pos); + BlockState state = level.getBlockState(pos);
@@ -41,7 +41,7 @@ index b4f5dbe9022dd20437c15c4f6fbe2ac06dacbadb..b52a9f05ada86f2d3767dd0d5ba8705e
static void setEntityPokingOutOfBlock(BlockSource pointer, Entity entity, Direction direction) { static void setEntityPokingOutOfBlock(BlockSource pointer, Entity entity, Direction direction) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 2af26908978d364e24a6ebbd2ac3a7456f2d0cc3..e9275427cc3337091054842558ec22c9bc34b419 100644 index 66162ef0ed12cd0bc4c705758dbbca19c3952d19..4c04982da44f13600a0410981754ab8fcdad6b7c 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -321,8 +321,10 @@ public class PurpurWorldConfig { @@ -321,8 +321,10 @@ public class PurpurWorldConfig {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Add option to disable dolphin treasure searching
diff --git a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java
index d8395f47cdf5ceffc1c65442e9d632847d22cca6..584b812c86d4f7180d971b5ad263c549dec51e61 100644 index b206686fe55f56b9c4d94a7b54927bf74842b46c..c9bc4eec14f40a31dbbe928f14277b12044c3089 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java
@@ -481,6 +481,7 @@ public class Dolphin extends WaterAnimal { @@ -481,6 +481,7 @@ public class Dolphin extends WaterAnimal {
@@ -17,22 +17,22 @@ index d8395f47cdf5ceffc1c65442e9d632847d22cca6..584b812c86d4f7180d971b5ad263c549
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 2c7417affdf20fe15303d5f604530a8a3aba0060..ab550704781b799222aa0fe58dfe817ea31222e0 100644 index 434860a0e72fc7bf808833193bf2ca476892c11b..45ee2548ebb5c41eccada81ffd859be2d97f4cd8 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -522,6 +522,7 @@ public class PurpurWorldConfig { @@ -594,6 +594,7 @@ public class PurpurWorldConfig {
} public float dolphinSpitSpeed = 1.0F;
public float dolphinSpitDamage = 2.0F;
public double dolphinMaxHealth = 10.0D; public double dolphinMaxHealth = 10.0D;
+ public boolean dolphinDisableTreasureSearching = false; + public boolean dolphinDisableTreasureSearching = false;
private void dolphinSettings() { private void dolphinSettings() {
if (PurpurConfig.version < 10) { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable);
double oldValue = getDouble("mobs.dolphin.attributes.max-health", dolphinMaxHealth); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable);
@@ -529,6 +530,7 @@ public class PurpurWorldConfig { @@ -606,6 +607,7 @@ public class PurpurWorldConfig {
set("mobs.dolphin.attributes.max_health", oldValue); set("mobs.dolphin.attributes.max_health", oldValue);
} }
dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth); dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth);
+ dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching); + dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching);
} }
public double donkeyMaxHealthMin = 15.0D; public boolean donkeyRidableInWater = false;

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Stop squids floating on top of water
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index cfef8dec1a96c97bd087ed6dc55eadae4feae079..aba657afb169a5cd563030e08f4c11305bd5a482 100644 index 0447ed23dd3e09fb887b7d7911846030a4e7fb45..0c18b2b3fcb64aa8c606e0823f365435929fe6f8 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java --- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -4292,6 +4292,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -4292,6 +4292,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -22,17 +22,17 @@ index cfef8dec1a96c97bd087ed6dc55eadae4feae079..aba657afb169a5cd563030e08f4c1130
if (this.touchingUnloadedChunk()) { if (this.touchingUnloadedChunk()) {
return false; return false;
diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java
index 47842db438bac4c571a11306b0621f30832bbd68..12235bede3232fbe8ffc5ec07cf3e16d5a08517f 100644 index 42ca9df0735b4f928fbbf1e695d1756f77be52fc..de0a015cc944c36358fc34a3142ecbf9d2a332b5 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Squid.java --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java
@@ -77,6 +77,12 @@ public class Squid extends WaterAnimal { @@ -77,6 +77,12 @@ public class Squid extends WaterAnimal {
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.squidMaxHealth);
} }
// Purpur end
+ @Override + @Override
+ public net.minecraft.world.phys.AABB getAxisForFluidCheck() { + public net.minecraft.world.phys.AABB getAxisForFluidCheck() {
+ // Stops squids from floating just over the water + // Stops squids from floating just over the water
+ return super.getAxisForFluidCheck().offsetY(level.purpurConfig.squidOffsetWaterCheck); + return super.getAxisForFluidCheck().offsetY(level().purpurConfig.squidOffsetWaterCheck);
+ } + }
+ +
@Override @Override
@@ -54,22 +54,22 @@ index ffc76354ead6937daf366c3d87bcb51d3e4c47f5..5b98d42b5d6bc07265fbb017e51a6281
+ // Purpur + // Purpur
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index ab550704781b799222aa0fe58dfe817ea31222e0..489e3f9d068d7987d2a676b3e567929775aeca17 100644 index 45ee2548ebb5c41eccada81ffd859be2d97f4cd8..6a252d335c5040cad8180b992943dc7041840752 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1122,6 +1122,7 @@ public class PurpurWorldConfig { @@ -1474,6 +1474,7 @@ public class PurpurWorldConfig {
public boolean squidControllable = true;
public double squidMaxHealth = 10.0D; public double squidMaxHealth = 10.0D;
public boolean squidImmuneToEAR = true; public boolean squidImmuneToEAR = true;
+ public double squidOffsetWaterCheck = 0.0D; + public double squidOffsetWaterCheck = 0.0D;
private void squidSettings() { private void squidSettings() {
if (PurpurConfig.version < 10) { squidRidable = getBoolean("mobs.squid.ridable", squidRidable);
double oldValue = getDouble("mobs.squid.attributes.max-health", squidMaxHealth); squidControllable = getBoolean("mobs.squid.controllable", squidControllable);
@@ -1130,6 +1131,7 @@ public class PurpurWorldConfig { @@ -1484,6 +1485,7 @@ public class PurpurWorldConfig {
} }
squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth);
squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR);
+ squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); + squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck);
} }
public double spiderMaxHealth = 16.0D; public boolean spiderRidable = false;

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Entities can use portals configuration
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index aba657afb169a5cd563030e08f4c11305bd5a482..9f213ed6b14c24fd9cb5fefb689d72032a883d09 100644 index 0c18b2b3fcb64aa8c606e0823f365435929fe6f8..68233db015138b0a615a65eac8c11afc42f7a1c6 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java --- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -2999,7 +2999,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -2999,7 +2999,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -13,7 +13,7 @@ index aba657afb169a5cd563030e08f4c11305bd5a482..9f213ed6b14c24fd9cb5fefb689d7203
if (this.isOnPortalCooldown()) { if (this.isOnPortalCooldown()) {
this.setPortalCooldown(); this.setPortalCooldown();
- } else { - } else {
+ } else if (level.purpurConfig.entitiesCanUsePortals || this instanceof ServerPlayer) { // Purpur + } else if (level().purpurConfig.entitiesCanUsePortals || this instanceof ServerPlayer) { // Purpur
if (!this.level().isClientSide && !pos.equals(this.portalEntrancePos)) { if (!this.level().isClientSide && !pos.equals(this.portalEntrancePos)) {
this.portalEntrancePos = pos.immutable(); this.portalEntrancePos = pos.immutable();
} }
@@ -22,12 +22,12 @@ index aba657afb169a5cd563030e08f4c11305bd5a482..9f213ed6b14c24fd9cb5fefb689d7203
public boolean canChangeDimensions() { public boolean canChangeDimensions() {
- return !this.isPassenger() && !this.isVehicle() && isAlive() && valid; // Paper - return !this.isPassenger() && !this.isVehicle() && isAlive() && valid; // Paper
+ return !this.isPassenger() && !this.isVehicle() && isAlive() && valid && (level.purpurConfig.entitiesCanUsePortals || this instanceof ServerPlayer); // Paper // Purpur + return !this.isPassenger() && !this.isVehicle() && isAlive() && valid && (level().purpurConfig.entitiesCanUsePortals || this instanceof ServerPlayer); // Paper // Purpur
} }
public float getBlockExplosionResistance(Explosion explosion, BlockGetter world, BlockPos pos, BlockState blockState, FluidState fluidState, float max) { public float getBlockExplosionResistance(Explosion explosion, BlockGetter world, BlockPos pos, BlockState blockState, FluidState fluidState, float max) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 489e3f9d068d7987d2a676b3e567929775aeca17..7a4658b2eb4fb785809783dbf30c5abecd32c6d8 100644 index 6a252d335c5040cad8180b992943dc7041840752..558562f574a31e748710e68a67baa1292d794b30 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -100,6 +100,7 @@ public class PurpurWorldConfig { @@ -100,6 +100,7 @@ public class PurpurWorldConfig {

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] Customizable wither health and healing
Adds the ability to customize the health of the wither, as well as the amount that it heals, and how often. Adds the ability to customize the health of the wither, as well as the amount that it heals, and how often.
diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
index 0ecbee51a48171cad95cc80bd26644774064fead..52f6459b0bfff7991da6cb0deda1b15664c4d00b 100644 index 45c050f2b9cebfa629c908cb3b91a909489b8ec1..b39a7dfb910e99f04275fa8e246581f5ccc27afa 100644
--- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
+++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
@@ -529,8 +529,10 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @@ -529,8 +529,10 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
@@ -16,26 +16,26 @@ index 0ecbee51a48171cad95cc80bd26644774064fead..52f6459b0bfff7991da6cb0deda1b156
- if (this.tickCount % 20 == 0) { - if (this.tickCount % 20 == 0) {
- this.heal(1.0F, EntityRegainHealthEvent.RegainReason.REGEN); // CraftBukkit - this.heal(1.0F, EntityRegainHealthEvent.RegainReason.REGEN); // CraftBukkit
+ // Purpur start - customizable heal rate and amount + // Purpur start - customizable heal rate and amount
+ if (this.tickCount % level.purpurConfig.witherHealthRegenDelay == 0) { + if (this.tickCount % level().purpurConfig.witherHealthRegenDelay == 0) {
+ this.heal(level.purpurConfig.witherHealthRegenAmount, EntityRegainHealthEvent.RegainReason.REGEN); // CraftBukkit + this.heal(level().purpurConfig.witherHealthRegenAmount, EntityRegainHealthEvent.RegainReason.REGEN); // CraftBukkit
+ // Purpur end + // Purpur end
} }
this.bossEvent.setProgress(this.getHealth() / this.getMaxHealth()); this.bossEvent.setProgress(this.getHealth() / this.getMaxHealth());
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 7a4658b2eb4fb785809783dbf30c5abecd32c6d8..0c0c2745a18593ee7da491d0f1b5c0d11aa1a3c4 100644 index 558562f574a31e748710e68a67baa1292d794b30..09b253836220f0e6de3b0c804ffb34bd6480c809 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1273,6 +1273,8 @@ public class PurpurWorldConfig { @@ -1713,6 +1713,8 @@ public class PurpurWorldConfig {
} public boolean witherControllable = true;
public double witherMaxY = 320D;
public double witherMaxHealth = 300.0D; public double witherMaxHealth = 300.0D;
+ public float witherHealthRegenAmount = 1.0f; + public float witherHealthRegenAmount = 1.0f;
+ public int witherHealthRegenDelay = 20; + public int witherHealthRegenDelay = 20;
private void witherSettings() { private void witherSettings() {
if (PurpurConfig.version < 8) { witherRidable = getBoolean("mobs.wither.ridable", witherRidable);
double oldValue = getDouble("mobs.wither.max-health", witherMaxHealth); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater);
@@ -1284,6 +1286,8 @@ public class PurpurWorldConfig { @@ -1728,6 +1730,8 @@ public class PurpurWorldConfig {
set("mobs.wither.attributes.max_health", oldValue); set("mobs.wither.attributes.max_health", oldValue);
} }
witherMaxHealth = getDouble("mobs.wither.attributes.max_health", witherMaxHealth); witherMaxHealth = getDouble("mobs.wither.attributes.max_health", witherMaxHealth);
@@ -43,4 +43,4 @@ index 7a4658b2eb4fb785809783dbf30c5abecd32c6d8..0c0c2745a18593ee7da491d0f1b5c0d1
+ witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay); + witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay);
} }
public double witherSkeletonMaxHealth = 20.0D; public boolean witherSkeletonRidable = false;

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Raid cooldown setting
diff --git a/src/main/java/net/minecraft/world/entity/raid/Raids.java b/src/main/java/net/minecraft/world/entity/raid/Raids.java diff --git a/src/main/java/net/minecraft/world/entity/raid/Raids.java b/src/main/java/net/minecraft/world/entity/raid/Raids.java
index 41457c9f27b18fa2734a6cca297ec5186470e82f..94356e0541f8f4da68211fa533347cc97d4f3518 100644 index 41457c9f27b18fa2734a6cca297ec5186470e82f..aa095686746ecc252b66670ba541cd243b6f7061 100644
--- a/src/main/java/net/minecraft/world/entity/raid/Raids.java --- a/src/main/java/net/minecraft/world/entity/raid/Raids.java
+++ b/src/main/java/net/minecraft/world/entity/raid/Raids.java +++ b/src/main/java/net/minecraft/world/entity/raid/Raids.java
@@ -28,6 +28,7 @@ import net.minecraft.world.phys.Vec3; @@ -28,6 +28,7 @@ import net.minecraft.world.phys.Vec3;
@@ -21,7 +21,7 @@ index 41457c9f27b18fa2734a6cca297ec5186470e82f..94356e0541f8f4da68211fa533347cc9
public void tick() { public void tick() {
++this.tick; ++this.tick;
+ // Purpur start + // Purpur start
+ if (level.purpurConfig.raidCooldownSeconds != 0 && this.tick % 20 == 0) { + if (level().purpurConfig.raidCooldownSeconds != 0 && this.tick % 20 == 0) {
+ com.google.common.collect.ImmutableMap.copyOf(playerCooldowns).forEach((uuid, i) -> { + com.google.common.collect.ImmutableMap.copyOf(playerCooldowns).forEach((uuid, i) -> {
+ if (i < 1) { + if (i < 1) {
+ playerCooldowns.remove(uuid); + playerCooldowns.remove(uuid);
@@ -38,18 +38,18 @@ index 41457c9f27b18fa2734a6cca297ec5186470e82f..94356e0541f8f4da68211fa533347cc9
} }
if (flag) { if (flag) {
+ if (level.purpurConfig.raidCooldownSeconds != 0 && playerCooldowns.containsKey(player.getUUID())) return null; // Purpur + if (level().purpurConfig.raidCooldownSeconds != 0 && playerCooldowns.containsKey(player.getUUID())) return null; // Purpur
// CraftBukkit start // CraftBukkit start
if (!org.bukkit.craftbukkit.event.CraftEventFactory.callRaidTriggerEvent(raid, player)) { if (!org.bukkit.craftbukkit.event.CraftEventFactory.callRaidTriggerEvent(raid, player)) {
player.removeEffect(MobEffects.BAD_OMEN); player.removeEffect(MobEffects.BAD_OMEN);
return null; return null;
} }
+ if (level.purpurConfig.raidCooldownSeconds != 0) playerCooldowns.put(player.getUUID(), level.purpurConfig.raidCooldownSeconds); // Purpur + if (level().purpurConfig.raidCooldownSeconds != 0) playerCooldowns.put(player.getUUID(), level().purpurConfig.raidCooldownSeconds); // Purpur
if (!this.raidMap.containsKey(raid.getId())) { if (!this.raidMap.containsKey(raid.getId())) {
this.raidMap.put(raid.getId(), raid); this.raidMap.put(raid.getId(), raid);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 88f3a76e1b88d70c781eb04c4c3de627d151e3df..44af2919281fe6afc08401d68ba421e4ea963136 100644 index 8eed1a2de61066137c8f7404e9156b0c204b4581..917ea564edcf27b727901028f5035a6caddfb08e 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -111,6 +111,7 @@ public class PurpurWorldConfig { @@ -111,6 +111,7 @@ public class PurpurWorldConfig {

View File

@@ -20,7 +20,7 @@ index a08c00b8c0488d18be5e182f7892e5ab71d12247..338f693d098b6ab507c30f6411c9a952
ignored.add("goal_selector_1"); ignored.add("goal_selector_1");
ignored.add("goal_selector_2"); ignored.add("goal_selector_2");
diff --git a/src/main/java/net/minecraft/world/entity/monster/Drowned.java b/src/main/java/net/minecraft/world/entity/monster/Drowned.java 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 a27a0de6858aa69caefc436aec3827b365d3d00c..59bfc5df56ef7bab39630f69bc69d122fcd1653e 100644 index 6ec7d0f5e525f9e04b6fa0fb6d4da5fcc22fe653..64acb2e81ef65acb0d41db8b5f7c924c2e2a5e00 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java --- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java +++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java
@@ -120,7 +120,19 @@ public class Drowned extends Zombie implements RangedAttackMob { @@ -120,7 +120,19 @@ public class Drowned extends Zombie implements RangedAttackMob {
@@ -45,7 +45,7 @@ index a27a0de6858aa69caefc436aec3827b365d3d00c..59bfc5df56ef7bab39630f69bc69d122
this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Axolotl.class, true, false)); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Axolotl.class, true, false));
this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, true, false, Turtle.BABY_ON_LAND_SELECTOR)); this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, true, false, Turtle.BABY_ON_LAND_SELECTOR));
diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
index a0439eac45376c132f6a1d7142c200e9c925130c..57a1ea56cfc6b0b8fe3a3379c9a602cf46fd8fbd 100644 index b2b04d7b7bbc400fb66cac385fa754d4fb47c7d9..bd75aa78a7dd437d6fce79a6cb18298184affe75 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
@@ -156,7 +156,19 @@ public class Zombie extends Monster { @@ -156,7 +156,19 @@ public class Zombie extends Monster {
@@ -70,22 +70,22 @@ index a0439eac45376c132f6a1d7142c200e9c925130c..57a1ea56cfc6b0b8fe3a3379c9a602cf
this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, true, false, Turtle.BABY_ON_LAND_SELECTOR)); this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, true, false, Turtle.BABY_ON_LAND_SELECTOR));
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index f6ee6a36d85531b5c39bb49c6b5a97dd7eb06444..f211d89ab4035cb59c2b0aeb0781cfd7261b992b 100644 index 19ee5b742ea9cab725fd28e86917389f368e3a22..12676dd8b1e9a7de8ed5815a06e3d107ce1244a5 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1381,6 +1381,7 @@ public class PurpurWorldConfig { @@ -1846,6 +1846,7 @@ public class PurpurWorldConfig {
public boolean zombieJockeyOnlyBaby = true; public boolean zombieJockeyOnlyBaby = true;
public double zombieJockeyChance = 0.05D; public double zombieJockeyChance = 0.05D;
public boolean zombieJockeyTryExistingChickens = true; public boolean zombieJockeyTryExistingChickens = true;
+ public boolean zombieAggressiveTowardsVillagerWhenLagging = true; + public boolean zombieAggressiveTowardsVillagerWhenLagging = true;
private void zombieSettings() { private void zombieSettings() {
if (PurpurConfig.version < 10) { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable);
double oldValue = getDouble("mobs.zombie.attributes.max-health", zombieMaxHealth); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater);
@@ -1392,6 +1393,7 @@ public class PurpurWorldConfig { @@ -1860,6 +1861,7 @@ public class PurpurWorldConfig {
zombieJockeyOnlyBaby = getBoolean("mobs.zombie.jockey.only-babies", zombieJockeyOnlyBaby); zombieJockeyOnlyBaby = getBoolean("mobs.zombie.jockey.only-babies", zombieJockeyOnlyBaby);
zombieJockeyChance = getDouble("mobs.zombie.jockey.chance", zombieJockeyChance); zombieJockeyChance = getDouble("mobs.zombie.jockey.chance", zombieJockeyChance);
zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens); zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens);
+ zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging); + zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging);
} }
public double zombieHorseMaxHealthMin = 15.0D; public boolean zombieHorseRidableInWater = false;

View File

@@ -5,31 +5,31 @@ Subject: [PATCH] Flying squids! Oh my!
diff --git a/src/main/java/net/minecraft/world/entity/GlowSquid.java b/src/main/java/net/minecraft/world/entity/GlowSquid.java diff --git a/src/main/java/net/minecraft/world/entity/GlowSquid.java b/src/main/java/net/minecraft/world/entity/GlowSquid.java
index aa155ec559e748c9bbb6ccddaa278ea6bba7ac63..277a5868b3fc4bbb472086b4fb50e905b02621ba 100644 index 730958dab7f074930cdccb88a89aa26e2b6a112b..b1ba0f24dd6f1ec4c60208564e4eb84bdcd457f4 100644
--- a/src/main/java/net/minecraft/world/entity/GlowSquid.java --- a/src/main/java/net/minecraft/world/entity/GlowSquid.java
+++ b/src/main/java/net/minecraft/world/entity/GlowSquid.java +++ b/src/main/java/net/minecraft/world/entity/GlowSquid.java
@@ -41,6 +41,11 @@ public class GlowSquid extends Squid { @@ -41,6 +41,11 @@ public class GlowSquid extends Squid {
this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.glowSquidMaxHealth);
} }
// Purpur end
+ @Override + @Override
+ public boolean canFly() { + public boolean canFly() {
+ return this.level.purpurConfig.glowSquidsCanFly; + return this.level().purpurConfig.glowSquidsCanFly;
+ } + }
+ +
@Override @Override
protected ParticleOptions getInkParticle() { protected ParticleOptions getInkParticle() {
return ParticleTypes.GLOW_SQUID_INK; return ParticleTypes.GLOW_SQUID_INK;
diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java
index 12235bede3232fbe8ffc5ec07cf3e16d5a08517f..2658be0f3535243b5a434917c9400332246ffcbe 100644 index de0a015cc944c36358fc34a3142ecbf9d2a332b5..1431d7f295614641c1a5a5197f4bac3fd0cd9d71 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Squid.java --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java
@@ -83,6 +83,15 @@ public class Squid extends WaterAnimal { @@ -83,6 +83,15 @@ public class Squid extends WaterAnimal {
return super.getAxisForFluidCheck().offsetY(level.purpurConfig.squidOffsetWaterCheck); return super.getAxisForFluidCheck().offsetY(level().purpurConfig.squidOffsetWaterCheck);
} }
+ public boolean canFly() { + public boolean canFly() {
+ return this.level.purpurConfig.squidsCanFly; + return this.level().purpurConfig.squidsCanFly;
+ } + }
+ +
+ @Override + @Override
@@ -58,33 +58,35 @@ index 12235bede3232fbe8ffc5ec07cf3e16d5a08517f..2658be0f3535243b5a434917c9400332
float f1 = Mth.cos(f) * 0.2F; float f1 = Mth.cos(f) * 0.2F;
float f2 = -0.1F + this.squid.getRandom().nextFloat() * 0.2F; float f2 = -0.1F + this.squid.getRandom().nextFloat() * 0.2F;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index f211d89ab4035cb59c2b0aeb0781cfd7261b992b..37b6eb3ad99ffe2216bc1fe991c44cbe7b70bd40 100644 index 12676dd8b1e9a7de8ed5815a06e3d107ce1244a5..03034444e0a0bbe680dfee0ab735cfad971e4fb5 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -738,8 +738,10 @@ public class PurpurWorldConfig { @@ -901,10 +901,12 @@ public class PurpurWorldConfig {
} public boolean glowSquidRidable = false;
public boolean glowSquidControllable = true;
public double glowSquidMaxHealth = 10.0D; public double glowSquidMaxHealth = 10.0D;
+ public boolean glowSquidsCanFly = false; + public boolean glowSquidsCanFly = false;
private void glowSquidSettings() { private void glowSquidSettings() {
glowSquidRidable = getBoolean("mobs.glow_squid.ridable", glowSquidRidable);
glowSquidControllable = getBoolean("mobs.glow_squid.controllable", glowSquidControllable);
glowSquidMaxHealth = getDouble("mobs.glow_squid.attributes.max_health", glowSquidMaxHealth); glowSquidMaxHealth = getDouble("mobs.glow_squid.attributes.max_health", glowSquidMaxHealth);
+ glowSquidsCanFly = getBoolean("mobs.glow_squid.can-fly", glowSquidsCanFly); + glowSquidsCanFly = getBoolean("mobs.glow_squid.can-fly", glowSquidsCanFly);
} }
public double goatMaxHealth = 10.0D; public boolean goatRidable = false;
@@ -1181,6 +1183,7 @@ public class PurpurWorldConfig { @@ -1533,6 +1535,7 @@ public class PurpurWorldConfig {
public double squidMaxHealth = 10.0D; public double squidMaxHealth = 10.0D;
public boolean squidImmuneToEAR = true; public boolean squidImmuneToEAR = true;
public double squidOffsetWaterCheck = 0.0D; public double squidOffsetWaterCheck = 0.0D;
+ public boolean squidsCanFly = false; + public boolean squidsCanFly = false;
private void squidSettings() { private void squidSettings() {
if (PurpurConfig.version < 10) { squidRidable = getBoolean("mobs.squid.ridable", squidRidable);
double oldValue = getDouble("mobs.squid.attributes.max-health", squidMaxHealth); squidControllable = getBoolean("mobs.squid.controllable", squidControllable);
@@ -1190,6 +1193,7 @@ public class PurpurWorldConfig { @@ -1544,6 +1547,7 @@ public class PurpurWorldConfig {
squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth);
squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR);
squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck);
+ squidsCanFly = getBoolean("mobs.squid.can-fly", squidsCanFly); + squidsCanFly = getBoolean("mobs.squid.can-fly", squidsCanFly);
} }
public double spiderMaxHealth = 16.0D; public boolean spiderRidable = false;

View File

@@ -7,7 +7,7 @@ This prevents keeping arrows alive indefinitely (such as when the block
the arrow is stuck in gets removed, like a piston head going up/down) the arrow is stuck in gets removed, like a piston head going up/down)
diff --git a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java diff --git a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java
index 7226be19248a1ffb8ff2c89b55882529d33a6c0c..57f89ff7ddcd738100f296ae7a21b3240ab374de 100644 index 7226be19248a1ffb8ff2c89b55882529d33a6c0c..4f98d7f755ad692dd9589134524a604ec747d5d9 100644
--- a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java --- a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java
+++ b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java +++ b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java
@@ -312,7 +312,7 @@ public abstract class AbstractArrow extends Projectile { @@ -312,7 +312,7 @@ public abstract class AbstractArrow extends Projectile {
@@ -15,12 +15,12 @@ index 7226be19248a1ffb8ff2c89b55882529d33a6c0c..57f89ff7ddcd738100f296ae7a21b324
this.setDeltaMovement(vec3d.multiply((double) (this.random.nextFloat() * 0.2F), (double) (this.random.nextFloat() * 0.2F), (double) (this.random.nextFloat() * 0.2F))); this.setDeltaMovement(vec3d.multiply((double) (this.random.nextFloat() * 0.2F), (double) (this.random.nextFloat() * 0.2F), (double) (this.random.nextFloat() * 0.2F)));
- this.life = 0; - this.life = 0;
+ if (this.level.purpurConfig.arrowMovementResetsDespawnCounter) this.life = 0; // Purpur - do not reset despawn counter + if (this.level().purpurConfig.arrowMovementResetsDespawnCounter) this.life = 0; // Purpur - do not reset despawn counter
} }
@Override @Override
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 4d14c68c3d5a5ee8070a678740283c5b2938b7bf..9613301106d4f5ef9121400f8a32205428b6f4bf 100644 index 2589a64e795b69b2c9ace041202567f7959df32b..a0c82e8b354318fc2795432beb8b88f619e96dc4 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -103,6 +103,11 @@ public class PurpurWorldConfig { @@ -103,6 +103,11 @@ public class PurpurWorldConfig {

View File

@@ -104,7 +104,7 @@ index 8673d325bd866704ae90ac31eb54f78097eac952..10cff85dd4a59558dd487a3c5c7871a0
this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 90c9d40009d2e93732110915447190b81c902393..1e1cfe78113742ea865ca56d5bbf01483d2e0a2c 100644 index 538055ccc9db86b41f204da91061807a637e6175..25976e5d003d61595db1292b294364c0a2f188b2 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -117,6 +117,7 @@ public class PurpurWorldConfig { @@ -117,6 +117,7 @@ public class PurpurWorldConfig {
@@ -124,13 +124,13 @@ index 90c9d40009d2e93732110915447190b81c902393..1e1cfe78113742ea865ca56d5bbf0148
public int daytimeTicks = 12000; public int daytimeTicks = 12000;
diff --git a/src/main/java/org/purpurmc/purpur/command/PurpurCommand.java b/src/main/java/org/purpurmc/purpur/command/PurpurCommand.java diff --git a/src/main/java/org/purpurmc/purpur/command/PurpurCommand.java b/src/main/java/org/purpurmc/purpur/command/PurpurCommand.java
index afdf04f8b22ad0b7c0b41675e44687b49c2f86d6..2621e54879e9ab0029a875f1d09eee67878b90d5 100644 index 173b6bba1c8eb4c6c6ab55cad478db7c4c91fd75..e1e2a010bb741110aff43690e3aa6be84a5e1bb8 100644
--- a/src/main/java/org/purpurmc/purpur/command/PurpurCommand.java --- a/src/main/java/org/purpurmc/purpur/command/PurpurCommand.java
+++ b/src/main/java/org/purpurmc/purpur/command/PurpurCommand.java +++ b/src/main/java/org/purpurmc/purpur/command/PurpurCommand.java
@@ -49,6 +49,7 @@ public class PurpurCommand extends Command { @@ -49,6 +49,7 @@ public class PurpurCommand extends Command {
PurpurConfig.init((File) console.options.valueOf("purpur-settings")); PurpurConfig.init((File) console.options.valueOf("purpur-settings"));
for (ServerLevel level : console.getAllLevels()) { for (ServerLevel level : console.getAllLevels()) {
level.purpurConfig.init(); level().purpurConfig.init();
+ level.resetBreedingCooldowns(); + level.resetBreedingCooldowns();
} }
console.server.reloadCount++; console.server.reloadCount++;

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] Apply display names from item forms of entities to entities
diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
index 316716b8827b974fa62f7f27d57c3b776b42fbd8..1406cdd79c7183522f1f5c0b0edc6166ff9d4ed9 100644 index 09912c11bad7dc639b8afe8b0041a5fbc3189d7f..9eb196ee4061bb4c5713f33e8b16d91ec52711cd 100644
--- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java --- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
+++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java +++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
@@ -603,7 +603,7 @@ public class ArmorStand extends LivingEntity { @@ -603,7 +603,7 @@ public class ArmorStand extends LivingEntity {
@@ -14,12 +14,12 @@ index 316716b8827b974fa62f7f27d57c3b776b42fbd8..1406cdd79c7183522f1f5c0b0edc6166
ItemStack itemstack = new ItemStack(Items.ARMOR_STAND); ItemStack itemstack = new ItemStack(Items.ARMOR_STAND);
- if (this.hasCustomName()) { - if (this.hasCustomName()) {
+ if (this.level.purpurConfig.persistentDroppableEntityDisplayNames && this.hasCustomName()) { // Purpur + if (this.level().purpurConfig.persistentDroppableEntityDisplayNames && this.hasCustomName()) { // Purpur
itemstack.setHoverName(this.getCustomName()); itemstack.setHoverName(this.getCustomName());
} }
diff --git a/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java b/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java diff --git a/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java b/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java
index 955316687e2e29ad75a0052317a7b0f89034c82a..43f9733d4cc180b3103173d86bf2e8742f87de2a 100644 index 955316687e2e29ad75a0052317a7b0f89034c82a..19fa9b30768e1d3d095b5efdde1399d5ac7df821 100644
--- a/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java --- a/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java
+++ b/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java +++ b/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java
@@ -272,7 +272,13 @@ public class ItemFrame extends HangingEntity { @@ -272,7 +272,13 @@ public class ItemFrame extends HangingEntity {
@@ -29,7 +29,7 @@ index 955316687e2e29ad75a0052317a7b0f89034c82a..43f9733d4cc180b3103173d86bf2e874
- this.spawnAtLocation(this.getFrameItemStack()); - this.spawnAtLocation(this.getFrameItemStack());
+ // Purpur start + // Purpur start
+ final ItemStack itemFrame = this.getFrameItemStack(); + final ItemStack itemFrame = this.getFrameItemStack();
+ if (this.level.purpurConfig.persistentDroppableEntityDisplayNames && this.hasCustomName()) { + if (this.level().purpurConfig.persistentDroppableEntityDisplayNames && this.hasCustomName()) {
+ itemFrame.setHoverName(this.getCustomName()); + itemFrame.setHoverName(this.getCustomName());
+ } + }
+ this.spawnAtLocation(itemFrame); + this.spawnAtLocation(itemFrame);
@@ -38,7 +38,7 @@ index 955316687e2e29ad75a0052317a7b0f89034c82a..43f9733d4cc180b3103173d86bf2e874
if (!itemstack.isEmpty()) { if (!itemstack.isEmpty()) {
diff --git a/src/main/java/net/minecraft/world/entity/decoration/Painting.java b/src/main/java/net/minecraft/world/entity/decoration/Painting.java diff --git a/src/main/java/net/minecraft/world/entity/decoration/Painting.java b/src/main/java/net/minecraft/world/entity/decoration/Painting.java
index d5784a19cec98eb199a51acd9e1f4de8c6bf7265..6bf0daff390e1a7335d2b61cc52d415002cf6f08 100644 index d5784a19cec98eb199a51acd9e1f4de8c6bf7265..4b3a8e4a084585d56dd10a08405463b1a677368b 100644
--- a/src/main/java/net/minecraft/world/entity/decoration/Painting.java --- a/src/main/java/net/minecraft/world/entity/decoration/Painting.java
+++ b/src/main/java/net/minecraft/world/entity/decoration/Painting.java +++ b/src/main/java/net/minecraft/world/entity/decoration/Painting.java
@@ -159,7 +159,13 @@ public class Painting extends HangingEntity implements VariantHolder<Holder<Pain @@ -159,7 +159,13 @@ public class Painting extends HangingEntity implements VariantHolder<Holder<Pain
@@ -48,7 +48,7 @@ index d5784a19cec98eb199a51acd9e1f4de8c6bf7265..6bf0daff390e1a7335d2b61cc52d4150
- this.spawnAtLocation(Items.PAINTING); - this.spawnAtLocation(Items.PAINTING);
+ // Purpur start + // Purpur start
+ final ItemStack painting = new ItemStack(Items.PAINTING); + final ItemStack painting = new ItemStack(Items.PAINTING);
+ if (this.level.purpurConfig.persistentDroppableEntityDisplayNames && this.hasCustomName()) { + if (this.level().purpurConfig.persistentDroppableEntityDisplayNames && this.hasCustomName()) {
+ painting.setHoverName(this.getCustomName()); + painting.setHoverName(this.getCustomName());
+ } + }
+ this.spawnAtLocation(painting); + this.spawnAtLocation(painting);
@@ -57,7 +57,7 @@ index d5784a19cec98eb199a51acd9e1f4de8c6bf7265..6bf0daff390e1a7335d2b61cc52d4150
} }
diff --git a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java diff --git a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java
index 5e33f19193ff49d0d2119d811d8f81d0664e5cee..9a68c0d7cd74818a663ddedf23a22799754f08aa 100644 index cb8443c9bc902741dfe6746baca9129214ab503b..a941b00f0e4b667925ca68cc706245b05478ad77 100644
--- a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java --- a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java
+++ b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java +++ b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java
@@ -223,7 +223,13 @@ public class Boat extends Entity implements VariantHolder<Boat.Type> { @@ -223,7 +223,13 @@ public class Boat extends Entity implements VariantHolder<Boat.Type> {
@@ -67,7 +67,7 @@ index 5e33f19193ff49d0d2119d811d8f81d0664e5cee..9a68c0d7cd74818a663ddedf23a22799
- this.spawnAtLocation((ItemLike) this.getDropItem()); - this.spawnAtLocation((ItemLike) this.getDropItem());
+ // Purpur start + // Purpur start
+ final ItemStack boat = new ItemStack(this.getDropItem()); + final ItemStack boat = new ItemStack(this.getDropItem());
+ if (this.level.purpurConfig.persistentDroppableEntityDisplayNames && this.hasCustomName()) { + if (this.level().purpurConfig.persistentDroppableEntityDisplayNames && this.hasCustomName()) {
+ boat.setHoverName(this.getCustomName()); + boat.setHoverName(this.getCustomName());
+ } + }
+ this.spawnAtLocation(boat); + this.spawnAtLocation(boat);
@@ -136,7 +136,7 @@ index b2ad6d230de2c29f371178bccde1111c7532ee70..6667926519a0f1c151e53f59cce36e74
if (((HangingEntity) object).survives()) { if (((HangingEntity) object).survives()) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 0eda8243f19af580e6ca20bf1583e0f4d6c5504f..e703800b22ec6f8859504605564a9b2f06dd51c3 100644 index 8223c4c0c24dc222fd4dad216c1b2b7daa98305f..88bc6cdabe0c3c0fb72bc4c88feb3cb376579784 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -99,8 +99,10 @@ public class PurpurWorldConfig { @@ -99,8 +99,10 @@ public class PurpurWorldConfig {

View File

@@ -5,19 +5,19 @@ Subject: [PATCH] Set name visible when using a Name Tag on an Armor Stand
diff --git a/src/main/java/net/minecraft/world/item/NameTagItem.java b/src/main/java/net/minecraft/world/item/NameTagItem.java diff --git a/src/main/java/net/minecraft/world/item/NameTagItem.java b/src/main/java/net/minecraft/world/item/NameTagItem.java
index 2941c16ef486345b57ab2dfcd26f0272285d3b5a..a312bdc5c90cdcc45b40fc54a1a2a98f54eae82e 100644 index 2941c16ef486345b57ab2dfcd26f0272285d3b5a..7cc6812bf6f2ba015f65fd1fc1eaac02dd0f53e2 100644
--- a/src/main/java/net/minecraft/world/item/NameTagItem.java --- a/src/main/java/net/minecraft/world/item/NameTagItem.java
+++ b/src/main/java/net/minecraft/world/item/NameTagItem.java +++ b/src/main/java/net/minecraft/world/item/NameTagItem.java
@@ -20,6 +20,7 @@ public class NameTagItem extends Item { @@ -20,6 +20,7 @@ public class NameTagItem extends Item {
if (!event.callEvent()) return InteractionResult.PASS; if (!event.callEvent()) return InteractionResult.PASS;
LivingEntity newEntityLiving = ((org.bukkit.craftbukkit.entity.CraftLivingEntity) event.getEntity()).getHandle(); LivingEntity newEntityLiving = ((org.bukkit.craftbukkit.entity.CraftLivingEntity) event.getEntity()).getHandle();
newEntityLiving.setCustomName(event.getName() != null ? io.papermc.paper.adventure.PaperAdventure.asVanilla(event.getName()) : null); newEntityLiving.setCustomName(event.getName() != null ? io.papermc.paper.adventure.PaperAdventure.asVanilla(event.getName()) : null);
+ if (user.level.purpurConfig.armorstandFixNametags && entity instanceof net.minecraft.world.entity.decoration.ArmorStand) entity.setCustomNameVisible(true); // Purpur + if (user.level().purpurConfig.armorstandFixNametags && entity instanceof net.minecraft.world.entity.decoration.ArmorStand) entity.setCustomNameVisible(true); // Purpur
if (event.isPersistent() && newEntityLiving instanceof Mob) { if (event.isPersistent() && newEntityLiving instanceof Mob) {
((Mob) newEntityLiving).setPersistenceRequired(); ((Mob) newEntityLiving).setPersistenceRequired();
// Paper end // Paper end
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index e703800b22ec6f8859504605564a9b2f06dd51c3..6369804009951ed9efb15d9c2d4f74d5810850f9 100644 index 88bc6cdabe0c3c0fb72bc4c88feb3cb376579784..edf78456ecd22923503732242e2fb04c15a7a5d6 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -100,9 +100,11 @@ public class PurpurWorldConfig { @@ -100,9 +100,11 @@ public class PurpurWorldConfig {

View File

@@ -8,7 +8,7 @@ This should help to reduce the amount of dirt, gravel, grass, and etc.
that Endermen like to randomly place all over the world. that Endermen like to randomly place all over the world.
diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
index ba7d9d2b6927dd20e82009d57d77f713ab9be8ab..094ed658eaedcd88461330de0816e29b7db8acd2 100644 index 15eb4c93ddd4ea06640ff45e11c54b5c761ca89a..47b82549b401acca5e9a5702d41674652ab6853f 100644
--- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
+++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
@@ -484,7 +484,7 @@ public class EnderMan extends Monster implements NeutralMob { @@ -484,7 +484,7 @@ public class EnderMan extends Monster implements NeutralMob {
@@ -16,27 +16,27 @@ index ba7d9d2b6927dd20e82009d57d77f713ab9be8ab..094ed658eaedcd88461330de0816e29b
@Override @Override
public boolean requiresCustomPersistence() { public boolean requiresCustomPersistence() {
- return super.requiresCustomPersistence() || this.getCarriedBlock() != null; - return super.requiresCustomPersistence() || this.getCarriedBlock() != null;
+ return super.requiresCustomPersistence() || (!this.level.purpurConfig.endermanDespawnEvenWithBlock && this.getCarriedBlock() != null); // Purpur + return super.requiresCustomPersistence() || (!this.level().purpurConfig.endermanDespawnEvenWithBlock && this.getCarriedBlock() != null); // Purpur
} }
private static class EndermanFreezeWhenLookedAt extends Goal { private static class EndermanFreezeWhenLookedAt extends Goal {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 6369804009951ed9efb15d9c2d4f74d5810850f9..07ca764cd3436f2da79e9b8c7bb370f61d1a854f 100644 index edf78456ecd22923503732242e2fb04c15a7a5d6..5f7069b47deed8835aa91303e2c037e09e78fbc5 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -717,6 +717,7 @@ public class PurpurWorldConfig { @@ -832,6 +832,7 @@ public class PurpurWorldConfig {
public boolean endermanControllable = true;
public double endermanMaxHealth = 40.0D; public double endermanMaxHealth = 40.0D;
public boolean endermanAllowGriefing = true; public boolean endermanAllowGriefing = true;
+ public boolean endermanDespawnEvenWithBlock = false; + public boolean endermanDespawnEvenWithBlock = false;
private void endermanSettings() { private void endermanSettings() {
if (PurpurConfig.version < 10) { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable);
double oldValue = getDouble("mobs.enderman.attributes.max-health", endermanMaxHealth); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater);
@@ -725,6 +726,7 @@ public class PurpurWorldConfig { @@ -843,6 +844,7 @@ public class PurpurWorldConfig {
} }
endermanMaxHealth = getDouble("mobs.enderman.attributes.max_health", endermanMaxHealth); endermanMaxHealth = getDouble("mobs.enderman.attributes.max_health", endermanMaxHealth);
endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing); endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing);
+ endermanDespawnEvenWithBlock = getBoolean("mobs.enderman.can-despawn-with-held-block", endermanDespawnEvenWithBlock); + endermanDespawnEvenWithBlock = getBoolean("mobs.enderman.can-despawn-with-held-block", endermanDespawnEvenWithBlock);
} }
public double endermiteMaxHealth = 8.0D; public boolean endermiteRidable = false;

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Add configurable snowball damage
diff --git a/src/main/java/net/minecraft/world/entity/projectile/Snowball.java b/src/main/java/net/minecraft/world/entity/projectile/Snowball.java diff --git a/src/main/java/net/minecraft/world/entity/projectile/Snowball.java b/src/main/java/net/minecraft/world/entity/projectile/Snowball.java
index 718e120c9768cf716b32d3d652f53f1dda925168..e1e19a360be99b189dee1652e5289292f4996d92 100644 index 718e120c9768cf716b32d3d652f53f1dda925168..b90cedad282e95a067aca176fafa9f72a726f520 100644
--- a/src/main/java/net/minecraft/world/entity/projectile/Snowball.java --- a/src/main/java/net/minecraft/world/entity/projectile/Snowball.java
+++ b/src/main/java/net/minecraft/world/entity/projectile/Snowball.java +++ b/src/main/java/net/minecraft/world/entity/projectile/Snowball.java
@@ -53,7 +53,7 @@ public class Snowball extends ThrowableItemProjectile { @@ -53,7 +53,7 @@ public class Snowball extends ThrowableItemProjectile {
@@ -13,12 +13,12 @@ index 718e120c9768cf716b32d3d652f53f1dda925168..e1e19a360be99b189dee1652e5289292
super.onHitEntity(entityHitResult); super.onHitEntity(entityHitResult);
Entity entity = entityHitResult.getEntity(); Entity entity = entityHitResult.getEntity();
- int i = entity instanceof Blaze ? 3 : 0; - int i = entity instanceof Blaze ? 3 : 0;
+ int i = entity.level.purpurConfig.snowballDamage >= 0 ? entity.level.purpurConfig.snowballDamage : entity instanceof Blaze ? 3 : 0; // Purpur + int i = entity.level().purpurConfig.snowballDamage >= 0 ? entity.level().purpurConfig.snowballDamage : entity instanceof Blaze ? 3 : 0; // Purpur
entity.hurt(this.damageSources().thrown(this, this.getOwner()), (float)i); entity.hurt(this.damageSources().thrown(this, this.getOwner()), (float)i);
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 07ca764cd3436f2da79e9b8c7bb370f61d1a854f..abb4fb180bc16441e294f77a3b8a1b9d5543061f 100644 index 5f7069b47deed8835aa91303e2c037e09e78fbc5..168da72bdbb443f8c5bebc7d2a1ed8820020cf49 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -356,6 +356,11 @@ public class PurpurWorldConfig { @@ -356,6 +356,11 @@ public class PurpurWorldConfig {

View File

@@ -5,20 +5,20 @@ Subject: [PATCH] Add boat fall damage config
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index 375a6a12cabfdc798792166a60e3b18e8cbd7480..8c1a2fafd2e53720a524c1b84bb95f3865d029f9 100644 index 8dc74f36bcccc4b5023fafce22115778ec08bff6..344ea725ab5f4fb373542dac63761263dfe95035 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -1112,7 +1112,16 @@ public class ServerPlayer extends Player { @@ -1112,7 +1112,16 @@ public class ServerPlayer extends Player {
if (this.isInvulnerableTo(source)) { if (this.isInvulnerableTo(source)) {
return false; return false;
} else { } else {
- if (source.is(DamageTypeTags.IS_FALL) && getRootVehicle() instanceof net.minecraft.world.entity.vehicle.AbstractMinecart && level.purpurConfig.minecartControllable && !level.purpurConfig.minecartControllableFallDamage) return false; // Purpur - if (source.is(DamageTypeTags.IS_FALL) && getRootVehicle() instanceof net.minecraft.world.entity.vehicle.AbstractMinecart && level().purpurConfig.minecartControllable && !level().purpurConfig.minecartControllableFallDamage) return false; // Purpur
+ // Purpur start + // Purpur start
+ if (source.is(DamageTypeTags.IS_FALL)) { // Purpur + if (source.is(DamageTypeTags.IS_FALL)) { // Purpur
+ if (getRootVehicle() instanceof net.minecraft.world.entity.vehicle.AbstractMinecart && level.purpurConfig.minecartControllable && !level.purpurConfig.minecartControllableFallDamage) { + if (getRootVehicle() instanceof net.minecraft.world.entity.vehicle.AbstractMinecart && level().purpurConfig.minecartControllable && !level().purpurConfig.minecartControllableFallDamage) {
+ return false; + return false;
+ } + }
+ if (getRootVehicle() instanceof net.minecraft.world.entity.vehicle.Boat && !level.purpurConfig.boatsDoFallDamage) { + if (getRootVehicle() instanceof net.minecraft.world.entity.vehicle.Boat && !level().purpurConfig.boatsDoFallDamage) {
+ return false; + return false;
+ } + }
+ } + }
@@ -27,7 +27,7 @@ index 375a6a12cabfdc798792166a60e3b18e8cbd7480..8c1a2fafd2e53720a524c1b84bb95f38
if (!flag && isSpawnInvulnerable() && !source.is(DamageTypeTags.BYPASSES_INVULNERABILITY)) { // Purpur if (!flag && isSpawnInvulnerable() && !source.is(DamageTypeTags.BYPASSES_INVULNERABILITY)) { // Purpur
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index cdbf53d7c249d418d5958372b81ab9e7b3236925..0fb351aabd461ca77badd2099978c1095e0af220 100644 index 4af6702e967bec733bbd5ba21dc8599f7b25a7cc..9fa8f9fb1c36157f849b81ae712bed28e4a68b8f 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -114,6 +114,7 @@ public class PurpurWorldConfig { @@ -114,6 +114,7 @@ public class PurpurWorldConfig {

View File

@@ -10,7 +10,7 @@ If min-shoot-interval-ticks and max-shoot-interval-ticks are both set to
0, snow golems won't shoot any snowballs. 0, snow golems won't shoot any snowballs.
diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java
index d4d843ee7fe52a97dc1dd063c7437f6a6b05b9de..f43c37505e9e7c171b62cfc0621e425f5726dc3d 100644 index 2a5ffaf5614e19305f4e08e15752364919e68a49..ecc0f221fca332b6f4d8feb72dbafc52e1002a23 100644
--- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java
+++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java
@@ -79,7 +79,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @@ -79,7 +79,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM
@@ -18,15 +18,15 @@ index d4d843ee7fe52a97dc1dd063c7437f6a6b05b9de..f43c37505e9e7c171b62cfc0621e425f
protected void registerGoals() { protected void registerGoals() {
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
- this.goalSelector.addGoal(1, new RangedAttackGoal(this, 1.25D, 20, 10.0F)); - this.goalSelector.addGoal(1, new RangedAttackGoal(this, 1.25D, 20, 10.0F));
+ this.goalSelector.addGoal(1, new RangedAttackGoal(this, level.purpurConfig.snowGolemAttackDistance, level.purpurConfig.snowGolemSnowBallMin, level.purpurConfig.snowGolemSnowBallMax, level.purpurConfig.snowGolemSnowBallModifier)); // Purpur + this.goalSelector.addGoal(1, new RangedAttackGoal(this, level().purpurConfig.snowGolemAttackDistance, level().purpurConfig.snowGolemSnowBallMin, level().purpurConfig.snowGolemSnowBallMax, level().purpurConfig.snowGolemSnowBallModifier)); // Purpur
this.goalSelector.addGoal(2, new WaterAvoidingRandomStrollGoal(this, 1.0D, 1.0000001E-5F)); this.goalSelector.addGoal(2, new WaterAvoidingRandomStrollGoal(this, 1.0D, 1.0000001E-5F));
this.goalSelector.addGoal(3, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(3, new LookAtPlayerGoal(this, Player.class, 6.0F));
this.goalSelector.addGoal(4, new RandomLookAroundGoal(this)); this.goalSelector.addGoal(4, new RandomLookAroundGoal(this));
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 0fb351aabd461ca77badd2099978c1095e0af220..3e7226737f786399c06b80d72f2b0b7ec5bbd8e6 100644 index 9fa8f9fb1c36157f849b81ae712bed28e4a68b8f..5aeb547458ab4a632e64189c749586bba86d20d9 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1263,6 +1263,10 @@ public class PurpurWorldConfig { @@ -1601,6 +1601,10 @@ public class PurpurWorldConfig {
public double snowGolemMaxHealth = 4.0D; public double snowGolemMaxHealth = 4.0D;
public boolean snowGolemDropsPumpkin = true; public boolean snowGolemDropsPumpkin = true;
public boolean snowGolemPutPumpkinBack = false; public boolean snowGolemPutPumpkinBack = false;
@@ -35,9 +35,9 @@ index 0fb351aabd461ca77badd2099978c1095e0af220..3e7226737f786399c06b80d72f2b0b7e
+ public float snowGolemSnowBallModifier = 10.0F; + public float snowGolemSnowBallModifier = 10.0F;
+ public double snowGolemAttackDistance = 1.25D; + public double snowGolemAttackDistance = 1.25D;
private void snowGolemSettings() { private void snowGolemSettings() {
snowGolemLeaveTrailWhenRidden = getBoolean("mobs.snow_golem.leave-trail-when-ridden", snowGolemLeaveTrailWhenRidden); snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable);
if (PurpurConfig.version < 10) { snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater);
@@ -1273,6 +1277,10 @@ public class PurpurWorldConfig { @@ -1614,6 +1618,10 @@ public class PurpurWorldConfig {
snowGolemMaxHealth = getDouble("mobs.snow_golem.attributes.max_health", snowGolemMaxHealth); snowGolemMaxHealth = getDouble("mobs.snow_golem.attributes.max_health", snowGolemMaxHealth);
snowGolemDropsPumpkin = getBoolean("mobs.snow_golem.drop-pumpkin-when-sheared", snowGolemDropsPumpkin); snowGolemDropsPumpkin = getBoolean("mobs.snow_golem.drop-pumpkin-when-sheared", snowGolemDropsPumpkin);
snowGolemPutPumpkinBack = getBoolean("mobs.snow_golem.pumpkin-can-be-added-back", snowGolemPutPumpkinBack); snowGolemPutPumpkinBack = getBoolean("mobs.snow_golem.pumpkin-can-be-added-back", snowGolemPutPumpkinBack);
@@ -47,4 +47,4 @@ index 0fb351aabd461ca77badd2099978c1095e0af220..3e7226737f786399c06b80d72f2b0b7e
+ snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance); + snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance);
} }
public double snifferMaxHealth = 14.0D; public boolean snifferRidable = false;

View File

@@ -13,7 +13,7 @@ to the Piglin being angry, even though the player never hit them.
This patch adds a toggle to disable this behavior. This patch adds a toggle to disable this behavior.
diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java
index 0f53ab48bb28188400c7b420cd79ea202c8f5746..921d4e60052f6ceb9a6ecc2956350bd70c94dca7 100644 index 3d61b27c23d90e87fdfc8c170eafc116716ac047..67fd554cfd6b848ca1f2cf804ad4543ad2c88845 100644
--- a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java --- a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java
+++ b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java
@@ -152,7 +152,7 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { @@ -152,7 +152,7 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob {
@@ -21,7 +21,7 @@ index 0f53ab48bb28188400c7b420cd79ea202c8f5746..921d4e60052f6ceb9a6ecc2956350bd7
} }
- if (this.isAngry()) { - if (this.isAngry()) {
+ if (this.isAngry() && this.level.purpurConfig.zombifiedPiglinCountAsPlayerKillWhenAngry) { // Purpur + if (this.isAngry() && this.level().purpurConfig.zombifiedPiglinCountAsPlayerKillWhenAngry) { // Purpur
this.lastHurtByPlayerTime = this.tickCount; this.lastHurtByPlayerTime = this.tickCount;
} }
@@ -30,27 +30,26 @@ index 0f53ab48bb28188400c7b420cd79ea202c8f5746..921d4e60052f6ceb9a6ecc2956350bd7
} }
- if (entityliving instanceof Player) { - if (entityliving instanceof Player) {
+ if (entityliving instanceof Player && this.level.purpurConfig.zombifiedPiglinCountAsPlayerKillWhenAngry) { // Purpur + if (entityliving instanceof Player && this.level().purpurConfig.zombifiedPiglinCountAsPlayerKillWhenAngry) { // Purpur
this.setLastHurtByPlayer((Player) entityliving); this.setLastHurtByPlayer((Player) entityliving);
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 3e7226737f786399c06b80d72f2b0b7ec5bbd8e6..75a55280a0f57ef3586f3c32d5b37de504ee1fcc 100644 index 5aeb547458ab4a632e64189c749586bba86d20d9..b29c4380dc2bc7c0aab0e47b5714f14883e7a919 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1566,6 +1566,7 @@ public class PurpurWorldConfig { @@ -2039,6 +2039,7 @@ public class PurpurWorldConfig {
public boolean zombifiedPiglinJockeyOnlyBaby = true; public boolean zombifiedPiglinJockeyOnlyBaby = true;
public double zombifiedPiglinJockeyChance = 0.05D; public double zombifiedPiglinJockeyChance = 0.05D;
public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinJockeyTryExistingChickens = true;
+ public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; + public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true;
private void zombifiedPiglinSettings() { private void zombifiedPiglinSettings() {
if (PurpurConfig.version < 10) { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable);
double oldValue = getDouble("mobs.zombified_piglin.attributes.max-health", zombifiedPiglinMaxHealth); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater);
@@ -1577,6 +1578,7 @@ public class PurpurWorldConfig { @@ -2053,5 +2054,6 @@ public class PurpurWorldConfig {
zombifiedPiglinJockeyOnlyBaby = getBoolean("mobs.zombified_piglin.jockey.only-babies", zombifiedPiglinJockeyOnlyBaby); zombifiedPiglinJockeyOnlyBaby = getBoolean("mobs.zombified_piglin.jockey.only-babies", zombifiedPiglinJockeyOnlyBaby);
zombifiedPiglinJockeyChance = getDouble("mobs.zombified_piglin.jockey.chance", zombifiedPiglinJockeyChance); zombifiedPiglinJockeyChance = getDouble("mobs.zombified_piglin.jockey.chance", zombifiedPiglinJockeyChance);
zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens); zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens);
+ zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); + zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry);
} }
}
public boolean babiesAreRidable = true;

View File

@@ -7,7 +7,7 @@ Configurable chance to spawn a wolf that is rabid.
Rabid wolves attack all players, mobs, and animals. Rabid wolves attack all players, mobs, and animals.
diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java
index 3cd49c57d6dc4b0db31c3ac40447c89ce7e193d7..d8acf9fde413d2661cb14ff4d198f6e138a1e549 100644 index 074f1860e755348a5a3a8e9df383896656cee9af..563347f7b683d796f7d3575206d40656247a897c 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java
@@ -10,6 +10,7 @@ import net.minecraft.network.syncher.EntityDataAccessor; @@ -10,6 +10,7 @@ import net.minecraft.network.syncher.EntityDataAccessor;
@@ -94,7 +94,7 @@ index 3cd49c57d6dc4b0db31c3ac40447c89ce7e193d7..d8acf9fde413d2661cb14ff4d198f6e1
private static final float TAME_HEALTH = 20.0F; private static final float TAME_HEALTH = 20.0F;
private float interestedAngle; private float interestedAngle;
@@ -134,6 +172,37 @@ public class Wolf extends TamableAnimal implements NeutralMob { @@ -134,6 +172,37 @@ public class Wolf extends TamableAnimal implements NeutralMob {
return this.level.purpurConfig.wolfBreedingTicks; return this.level().purpurConfig.wolfBreedingTicks;
} }
+ public boolean isRabid() { + public boolean isRabid() {
@@ -184,7 +184,7 @@ index 3cd49c57d6dc4b0db31c3ac40447c89ce7e193d7..d8acf9fde413d2661cb14ff4d198f6e1
this.level().broadcastEntityEvent(this, (byte) 6); this.level().broadcastEntityEvent(this, (byte) 6);
} }
+ // Purpur start + // Purpur start
+ else if (this.level.purpurConfig.wolfMilkCuresRabies && itemstack.getItem() == Items.MILK_BUCKET && this.isRabid()) { + else if (this.level().purpurConfig.wolfMilkCuresRabies && itemstack.getItem() == Items.MILK_BUCKET && this.isRabid()) {
+ if (!player.isCreative()) { + if (!player.isCreative()) {
+ player.setItemInHand(hand, new ItemStack(Items.BUCKET)); + player.setItemInHand(hand, new ItemStack(Items.BUCKET));
+ } + }
@@ -222,19 +222,19 @@ index e43fd3e59fd8c74828ae65965fade27f56beef65..b2f133c8baabba1cffa6e92ea0f85453
+ // Purpur end + // Purpur end
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 75a55280a0f57ef3586f3c32d5b37de504ee1fcc..15a8ec2ee6677d6dd5b0fd60ae1d02c7c6c21548 100644 index b29c4380dc2bc7c0aab0e47b5714f14883e7a919..f9a21e10b3d9faf9d7890ea3ca1c7fd3e1ccc03c 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1479,6 +1479,8 @@ public class PurpurWorldConfig { @@ -1929,6 +1929,8 @@ public class PurpurWorldConfig {
} public boolean wolfRidableInWater = true;
public boolean wolfControllable = true;
public double wolfMaxHealth = 8.0D; public double wolfMaxHealth = 8.0D;
+ public boolean wolfMilkCuresRabies = true; + public boolean wolfMilkCuresRabies = true;
+ public double wolfNaturalRabid = 0.0D; + public double wolfNaturalRabid = 0.0D;
public int wolfBreedingTicks = 6000; public int wolfBreedingTicks = 6000;
private void wolfSettings() { private void wolfSettings() {
if (PurpurConfig.version < 10) { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable);
@@ -1487,6 +1489,8 @@ public class PurpurWorldConfig { @@ -1940,6 +1942,8 @@ public class PurpurWorldConfig {
set("mobs.wolf.attributes.max_health", oldValue); set("mobs.wolf.attributes.max_health", oldValue);
} }
wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth);

View File

@@ -7,7 +7,7 @@ This allows for the server to set a default collar color when a wolf or cat is t
Resets to RED when the value is invalid. Resets to RED when the value is invalid.
diff --git a/src/main/java/net/minecraft/world/entity/animal/Cat.java b/src/main/java/net/minecraft/world/entity/animal/Cat.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Cat.java b/src/main/java/net/minecraft/world/entity/animal/Cat.java
index a312e8ff4e4cd3328f0586348a2eff3deaf4617d..bb827b0a7273a2636d01a506fae09d32e99db178 100644 index ffa2128b63e5e45c2a41e31a6b8b6e8df0bf9be4..956f125c9ae62537570bb9870be66872f3519f6a 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Cat.java --- a/src/main/java/net/minecraft/world/entity/animal/Cat.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java
@@ -345,6 +345,14 @@ public class Cat extends TamableAnimal implements VariantHolder<CatVariant> { @@ -345,6 +345,14 @@ public class Cat extends TamableAnimal implements VariantHolder<CatVariant> {
@@ -17,7 +17,7 @@ index a312e8ff4e4cd3328f0586348a2eff3deaf4617d..bb827b0a7273a2636d01a506fae09d32
+ // Purpur start + // Purpur start
+ @Override + @Override
+ public void tame(Player player) { + public void tame(Player player) {
+ setCollarColor(level.purpurConfig.catDefaultCollarColor); + setCollarColor(level().purpurConfig.catDefaultCollarColor);
+ super.tame(player); + super.tame(player);
+ } + }
+ // Purpur end + // Purpur end
@@ -26,7 +26,7 @@ index a312e8ff4e4cd3328f0586348a2eff3deaf4617d..bb827b0a7273a2636d01a506fae09d32
@Override @Override
public Cat getBreedOffspring(ServerLevel world, AgeableMob entity) { public Cat getBreedOffspring(ServerLevel world, AgeableMob entity) {
diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java
index d8acf9fde413d2661cb14ff4d198f6e138a1e549..8eb72d7f29bf9085bda1decc43f89125c14b1a2b 100644 index 563347f7b683d796f7d3575206d40656247a897c..6b270c1aa37096443701d7f4fbdab006afe2556c 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java
@@ -203,6 +203,12 @@ public class Wolf extends TamableAnimal implements NeutralMob { @@ -203,6 +203,12 @@ public class Wolf extends TamableAnimal implements NeutralMob {
@@ -35,7 +35,7 @@ index d8acf9fde413d2661cb14ff4d198f6e138a1e549..8eb72d7f29bf9085bda1decc43f89125
+ @Override + @Override
+ public void tame(Player player) { + public void tame(Player player) {
+ setCollarColor(level.purpurConfig.wolfDefaultCollarColor); + setCollarColor(level().purpurConfig.wolfDefaultCollarColor);
+ super.tame(player); + super.tame(player);
+ } + }
+ +
@@ -43,18 +43,18 @@ index d8acf9fde413d2661cb14ff4d198f6e138a1e549..8eb72d7f29bf9085bda1decc43f89125
protected void registerGoals() { protected void registerGoals() {
this.goalSelector.addGoal(1, new FloatGoal(this)); this.goalSelector.addGoal(1, new FloatGoal(this));
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 15a8ec2ee6677d6dd5b0fd60ae1d02c7c6c21548..8373d41949bef5ca988e2ea2c515885ae1de7fea 100644 index f9a21e10b3d9faf9d7890ea3ca1c7fd3e1ccc03c..0d9a4180f3af0752a44c0829df48fc0bbb52a116 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -569,6 +569,7 @@ public class PurpurWorldConfig { @@ -603,6 +603,7 @@ public class PurpurWorldConfig {
public int catSpawnSwampHutScanRange = 16; public int catSpawnSwampHutScanRange = 16;
public int catSpawnVillageScanRange = 48; public int catSpawnVillageScanRange = 48;
public int catBreedingTicks = 6000; public int catBreedingTicks = 6000;
+ public DyeColor catDefaultCollarColor = DyeColor.RED; + public DyeColor catDefaultCollarColor = DyeColor.RED;
private void catSettings() { private void catSettings() {
if (PurpurConfig.version < 10) { catRidable = getBoolean("mobs.cat.ridable", catRidable);
double oldValue = getDouble("mobs.cat.attributes.max-health", catMaxHealth); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater);
@@ -580,6 +581,11 @@ public class PurpurWorldConfig { @@ -617,6 +618,11 @@ public class PurpurWorldConfig {
catSpawnSwampHutScanRange = getInt("mobs.cat.scan-range-for-other-cats.swamp-hut", catSpawnSwampHutScanRange); catSpawnSwampHutScanRange = getInt("mobs.cat.scan-range-for-other-cats.swamp-hut", catSpawnSwampHutScanRange);
catSpawnVillageScanRange = getInt("mobs.cat.scan-range-for-other-cats.village", catSpawnVillageScanRange); catSpawnVillageScanRange = getInt("mobs.cat.scan-range-for-other-cats.village", catSpawnVillageScanRange);
catBreedingTicks = getInt("mobs.cat.breeding-delay-ticks", catBreedingTicks); catBreedingTicks = getInt("mobs.cat.breeding-delay-ticks", catBreedingTicks);
@@ -65,16 +65,16 @@ index 15a8ec2ee6677d6dd5b0fd60ae1d02c7c6c21548..8373d41949bef5ca988e2ea2c515885a
+ } + }
} }
public double caveSpiderMaxHealth = 12.0D; public boolean caveSpiderRidable = false;
@@ -1479,6 +1485,7 @@ public class PurpurWorldConfig { @@ -1929,6 +1935,7 @@ public class PurpurWorldConfig {
} public boolean wolfRidableInWater = true;
public boolean wolfControllable = true;
public double wolfMaxHealth = 8.0D; public double wolfMaxHealth = 8.0D;
+ public DyeColor wolfDefaultCollarColor = DyeColor.RED; + public DyeColor wolfDefaultCollarColor = DyeColor.RED;
public boolean wolfMilkCuresRabies = true; public boolean wolfMilkCuresRabies = true;
public double wolfNaturalRabid = 0.0D; public double wolfNaturalRabid = 0.0D;
public int wolfBreedingTicks = 6000; public int wolfBreedingTicks = 6000;
@@ -1489,6 +1496,11 @@ public class PurpurWorldConfig { @@ -1942,6 +1949,11 @@ public class PurpurWorldConfig {
set("mobs.wolf.attributes.max_health", oldValue); set("mobs.wolf.attributes.max_health", oldValue);
} }
wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth);

View File

@@ -5,34 +5,34 @@ Subject: [PATCH] Phantom flames on swoop
diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java
index b230733d72843f3142c26cc7d0e9bf93054fc628..518c1cdf1459a8ac97c7ab39461cca074bad5bcf 100644 index 67aa490540d264775d8a8382cb5922f365ca6913..a9a942896dd428cd974970cac16857c27d08a7ec 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java
@@ -219,6 +219,7 @@ public class Phantom extends FlyingMob implements Enemy { @@ -219,6 +219,7 @@ public class Phantom extends FlyingMob implements Enemy {
this.level().addParticle(ParticleTypes.MYCELIUM, this.getX() - (double) f2, this.getY() + (double) f4, this.getZ() - (double) f3, 0.0D, 0.0D, 0.0D); this.level().addParticle(ParticleTypes.MYCELIUM, this.getX() - (double) f2, this.getY() + (double) f4, this.getZ() - (double) f3, 0.0D, 0.0D, 0.0D);
} }
+ if (level.purpurConfig.phantomFlamesOnSwoop && attackPhase == AttackPhase.SWOOP) shoot(); // Purpur + if (level().purpurConfig.phantomFlamesOnSwoop && attackPhase == AttackPhase.SWOOP) shoot(); // Purpur
} }
@Override @Override
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 8373d41949bef5ca988e2ea2c515885ae1de7fea..55ec718b1e03dec575c151336faa1a567946e8d8 100644 index 0d9a4180f3af0752a44c0829df48fc0bbb52a116..3a1c437eab3783c02e2adac370f49f016b107a27 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1054,6 +1054,7 @@ public class PurpurWorldConfig { @@ -1298,6 +1298,7 @@ public class PurpurWorldConfig {
public int phantomBurnInLight = 0; public int phantomBurnInLight = 0;
public boolean phantomIgnorePlayersWithTorch = false; public boolean phantomIgnorePlayersWithTorch = false;
public boolean phantomBurnInDaylight = true; public boolean phantomBurnInDaylight = true;
+ public boolean phantomFlamesOnSwoop = false; + public boolean phantomFlamesOnSwoop = false;
private void phantomSettings() { private void phantomSettings() {
if (PurpurConfig.version < 10) { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable);
double oldValue = getDouble("mobs.phantom.attributes.max-health", Double.parseDouble(phantomMaxHealth)); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater);
@@ -1077,6 +1078,7 @@ public class PurpurWorldConfig { @@ -1328,6 +1329,7 @@ public class PurpurWorldConfig {
phantomBurnInLight = getInt("mobs.phantom.burn-in-light", phantomBurnInLight); phantomBurnInLight = getInt("mobs.phantom.burn-in-light", phantomBurnInLight);
phantomBurnInDaylight = getBoolean("mobs.phantom.burn-in-daylight", phantomBurnInDaylight); phantomBurnInDaylight = getBoolean("mobs.phantom.burn-in-daylight", phantomBurnInDaylight);
phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch); phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch);
+ phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop); + phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop);
} }
public double pigMaxHealth = 10.0D; public boolean pigRidable = false;

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Striders give saddle back
diff --git a/src/main/java/net/minecraft/world/entity/monster/Strider.java b/src/main/java/net/minecraft/world/entity/monster/Strider.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Strider.java b/src/main/java/net/minecraft/world/entity/monster/Strider.java
index dded8bde49978c01c2534d448adc17812a2c4474..43459013151fc93c5707112161b212da88930e00 100644 index 93dca4758ed995373fe1585930f225604a4153fa..4c077c94b654f54465ece2aa45c5ead0a417ad0d 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Strider.java --- a/src/main/java/net/minecraft/world/entity/monster/Strider.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Strider.java +++ b/src/main/java/net/minecraft/world/entity/monster/Strider.java
@@ -486,6 +486,19 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { @@ -486,6 +486,19 @@ public class Strider extends Animal implements ItemSteerable, Saddleable {
@@ -13,7 +13,7 @@ index dded8bde49978c01c2534d448adc17812a2c4474..43459013151fc93c5707112161b212da
boolean flag = this.isFood(player.getItemInHand(hand)); boolean flag = this.isFood(player.getItemInHand(hand));
+ // Purpur start + // Purpur start
+ if (level.purpurConfig.striderGiveSaddleBack && player.isSecondaryUseActive() && !flag && isSaddled() && !isVehicle()) { + if (level().purpurConfig.striderGiveSaddleBack && player.isSecondaryUseActive() && !flag && isSaddled() && !isVehicle()) {
+ this.steering.setSaddle(false); + this.steering.setSaddle(false);
+ if (!player.getAbilities().instabuild) { + if (!player.getAbilities().instabuild) {
+ ItemStack saddle = new ItemStack(Items.SADDLE); + ItemStack saddle = new ItemStack(Items.SADDLE);
@@ -29,22 +29,22 @@ index dded8bde49978c01c2534d448adc17812a2c4474..43459013151fc93c5707112161b212da
if (!this.level().isClientSide) { if (!this.level().isClientSide) {
player.startRiding(this); player.startRiding(this);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 481ac57133506633b776db448819e73aebfb39e8..f319d80c225576e6970cf28c1fa11d305ac233db 100644 index 2bc29728f2731f56c144185757b7932aa6c038dd..b3697cffbf9e0ef637c547167b5b9091a3b9bf40 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1341,6 +1341,7 @@ public class PurpurWorldConfig { @@ -1707,6 +1707,7 @@ public class PurpurWorldConfig {
public boolean striderControllable = true;
public double striderMaxHealth = 20.0D; public double striderMaxHealth = 20.0D;
public int striderBreedingTicks = 6000; public int striderBreedingTicks = 6000;
+ public boolean striderGiveSaddleBack = false; + public boolean striderGiveSaddleBack = false;
private void striderSettings() { private void striderSettings() {
if (PurpurConfig.version < 10) { striderRidable = getBoolean("mobs.strider.ridable", striderRidable);
double oldValue = getDouble("mobs.strider.attributes.max-health", striderMaxHealth); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater);
@@ -1349,6 +1350,7 @@ public class PurpurWorldConfig { @@ -1718,6 +1719,7 @@ public class PurpurWorldConfig {
} }
striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth);
striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks);
+ striderGiveSaddleBack = getBoolean("mobs.strider.give-saddle-back", striderGiveSaddleBack); + striderGiveSaddleBack = getBoolean("mobs.strider.give-saddle-back", striderGiveSaddleBack);
} }
public double traderLlamaMaxHealthMin = 15.0D; public boolean tadpoleRidable = false;

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Full netherite armor grants fire resistance
diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java
index f67bd221a239d98151e055f444795dea28a07269..2f6856a29cb8dd7c84e3bf4bb4af6293fba0760e 100644 index fa2a0cc24bbe31abd49ce0f3f41bab2aa5d9c81f..ca16f896ede5cfb957849ef3ad1f90f6518659dc 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java --- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java
@@ -366,6 +366,16 @@ public abstract class Player extends LivingEntity { @@ -366,6 +366,16 @@ public abstract class Player extends LivingEntity {
@@ -13,12 +13,12 @@ index f67bd221a239d98151e055f444795dea28a07269..2f6856a29cb8dd7c84e3bf4bb4af6293
} }
+ // Purpur start + // Purpur start
+ if (this.level.purpurConfig.playerNetheriteFireResistanceDuration > 0 && this.level.getGameTime() % 20 == 0) { + if (this.level().purpurConfig.playerNetheriteFireResistanceDuration > 0 && this.level.getGameTime() % 20 == 0) {
+ if (itemstack.is(Items.NETHERITE_HELMET) + if (itemstack.is(Items.NETHERITE_HELMET)
+ && this.getItemBySlot(EquipmentSlot.CHEST).is(Items.NETHERITE_CHESTPLATE) + && this.getItemBySlot(EquipmentSlot.CHEST).is(Items.NETHERITE_CHESTPLATE)
+ && this.getItemBySlot(EquipmentSlot.LEGS).is(Items.NETHERITE_LEGGINGS) + && this.getItemBySlot(EquipmentSlot.LEGS).is(Items.NETHERITE_LEGGINGS)
+ && this.getItemBySlot(EquipmentSlot.FEET).is(Items.NETHERITE_BOOTS)) { + && this.getItemBySlot(EquipmentSlot.FEET).is(Items.NETHERITE_BOOTS)) {
+ this.addEffect(new MobEffectInstance(MobEffects.FIRE_RESISTANCE, this.level.purpurConfig.playerNetheriteFireResistanceDuration, this.level.purpurConfig.playerNetheriteFireResistanceAmplifier, this.level.purpurConfig.playerNetheriteFireResistanceAmbient, this.level.purpurConfig.playerNetheriteFireResistanceShowParticles, this.level.purpurConfig.playerNetheriteFireResistanceShowIcon), org.bukkit.event.entity.EntityPotionEffectEvent.Cause.NETHERITE_ARMOR); + this.addEffect(new MobEffectInstance(MobEffects.FIRE_RESISTANCE, this.level().purpurConfig.playerNetheriteFireResistanceDuration, this.level().purpurConfig.playerNetheriteFireResistanceAmplifier, this.level().purpurConfig.playerNetheriteFireResistanceAmbient, this.level().purpurConfig.playerNetheriteFireResistanceShowParticles, this.level().purpurConfig.playerNetheriteFireResistanceShowIcon), org.bukkit.event.entity.EntityPotionEffectEvent.Cause.NETHERITE_ARMOR);
+ } + }
+ } + }
+ // Purpur end + // Purpur end
@@ -26,7 +26,7 @@ index f67bd221a239d98151e055f444795dea28a07269..2f6856a29cb8dd7c84e3bf4bb4af6293
protected ItemCooldowns createItemCooldowns() { protected ItemCooldowns createItemCooldowns() {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index f319d80c225576e6970cf28c1fa11d305ac233db..06cb62b768168c06a7b454e0e7bb105b750729c3 100644 index b3697cffbf9e0ef637c547167b5b9091a3b9bf40..63b8d72db812f29fbd82bc62fd21d0d53413bd79 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -297,6 +297,19 @@ public class PurpurWorldConfig { @@ -297,6 +297,19 @@ public class PurpurWorldConfig {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Add mobGriefing bypass to everything affected
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index 1d0d22c9d3b8c907502b8fb044ebf8c5c49f6885..eac15c03b842840a47a0b2d1b0f3ea3920a621a5 100644 index 27df4e881e850a73947651ce7ad98df5159f4c1c..182436020d2376101f5863f80b4b6d3d9ebd6a2e 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -1767,7 +1767,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -1767,7 +1767,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -18,7 +18,7 @@ index 1d0d22c9d3b8c907502b8fb044ebf8c5c49f6885..eac15c03b842840a47a0b2d1b0f3ea39
BlockState iblockdata = Blocks.WITHER_ROSE.defaultBlockState(); BlockState iblockdata = Blocks.WITHER_ROSE.defaultBlockState();
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
index 4fbc1fa9d3d37129b2ef243b65844dce9fe44884..1f1c7a8668dcdf7850720b46b395322601dbf9a0 100644 index 0bdd8bcb37a899c1a4191ba13c0922f3385f020f..b0ce2885a304cb15964a1d3bf047c49f95ab594d 100644
--- a/src/main/java/net/minecraft/world/entity/Mob.java --- a/src/main/java/net/minecraft/world/entity/Mob.java
+++ b/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java
@@ -701,7 +701,7 @@ public abstract class Mob extends LivingEntity implements Targeting { @@ -701,7 +701,7 @@ public abstract class Mob extends LivingEntity implements Targeting {
@@ -57,7 +57,7 @@ index 4253b3b1263a7ae5a2f5f3a34674dfea615a81ea..a987c94fd321f51241c405659d6a0b23
@Override @Override
diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java
index abf796c3369da6b73c8587dfc05f56d0b8933fde..95dc62687d10e5c6f54baadda4a725094c52c07f 100644 index abf796c3369da6b73c8587dfc05f56d0b8933fde..f169bb0ca0d1f7bd1507436beca806a790d6b7d2 100644
--- a/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java --- a/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java
+++ b/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java +++ b/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java
@@ -69,7 +69,7 @@ public class EatBlockGoal extends Goal { @@ -69,7 +69,7 @@ public class EatBlockGoal extends Goal {
@@ -65,7 +65,7 @@ index abf796c3369da6b73c8587dfc05f56d0b8933fde..95dc62687d10e5c6f54baadda4a72509
if (EatBlockGoal.IS_TALL_GRASS.test(this.level.getBlockState(blockposition))) { if (EatBlockGoal.IS_TALL_GRASS.test(this.level.getBlockState(blockposition))) {
// CraftBukkit // CraftBukkit
- if (!CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockposition, Blocks.AIR.defaultBlockState(), !this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)).isCancelled()) { - if (!CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockposition, Blocks.AIR.defaultBlockState(), !this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)).isCancelled()) {
+ if (!CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockposition, Blocks.AIR.defaultBlockState(), !this.level.purpurConfig.sheepBypassMobGriefing && !this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)).isCancelled()) { // Purpur + if (!CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockposition, Blocks.AIR.defaultBlockState(), !this.level().purpurConfig.sheepBypassMobGriefing && !this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)).isCancelled()) { // Purpur
this.level.destroyBlock(blockposition, false); this.level.destroyBlock(blockposition, false);
} }
@@ -74,7 +74,7 @@ index abf796c3369da6b73c8587dfc05f56d0b8933fde..95dc62687d10e5c6f54baadda4a72509
if (this.level.getBlockState(blockposition1).is(Blocks.GRASS_BLOCK)) { if (this.level.getBlockState(blockposition1).is(Blocks.GRASS_BLOCK)) {
// CraftBukkit // CraftBukkit
- if (!CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockposition1, Blocks.DIRT.defaultBlockState(), !this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)).isCancelled()) { // Paper - Fix wrong block state - if (!CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockposition1, Blocks.DIRT.defaultBlockState(), !this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)).isCancelled()) { // Paper - Fix wrong block state
+ if (!CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockposition1, Blocks.DIRT.defaultBlockState(), !this.level.purpurConfig.sheepBypassMobGriefing && !this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)).isCancelled()) { // Paper - Fix wrong block state // Purpur + if (!CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockposition1, Blocks.DIRT.defaultBlockState(), !this.level().purpurConfig.sheepBypassMobGriefing && !this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)).isCancelled()) { // Paper - Fix wrong block state // Purpur
this.level.levelEvent(2001, blockposition1, Block.getId(Blocks.GRASS_BLOCK.defaultBlockState())); this.level.levelEvent(2001, blockposition1, Block.getId(Blocks.GRASS_BLOCK.defaultBlockState()));
this.level.setBlock(blockposition1, Blocks.DIRT.defaultBlockState(), 2); this.level.setBlock(blockposition1, Blocks.DIRT.defaultBlockState(), 2);
} }
@@ -92,7 +92,7 @@ index 0035461aff86fa3f44c860e7d77589b974446048..8c08457b5a9ade9b602851c9a12b015e
} else if (this.nextStartTick > 0) { } else if (this.nextStartTick > 0) {
--this.nextStartTick; --this.nextStartTick;
diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java
index 2232af2cef82014570596c122e11a47d3ae15b9b..eca7c43ac555417b0746ebb20f67978fa801af59 100644 index 989dc460d8a21b8e54ff4464998c2b02a6a9dd37..aa190c36d32aef0413e6bf89621fa9b42be16d82 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Fox.java --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java
@@ -1377,7 +1377,7 @@ public class Fox extends Animal implements VariantHolder<Fox.Type> { @@ -1377,7 +1377,7 @@ public class Fox extends Animal implements VariantHolder<Fox.Type> {
@@ -105,7 +105,7 @@ index 2232af2cef82014570596c122e11a47d3ae15b9b..eca7c43ac555417b0746ebb20f67978f
if (iblockdata.is(Blocks.SWEET_BERRY_BUSH)) { if (iblockdata.is(Blocks.SWEET_BERRY_BUSH)) {
diff --git a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java
index 857d4a70c8a9678e689ee0807f42cd5f7cc4902d..59aaa76f9c5b4639a632ef6ee67092983e7edf35 100644 index c21d48eb213dac6c932edfe7c4161e76510450a4..c5de6e469030615d9afc64f24cc50f901a557840 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java --- a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java +++ b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java
@@ -637,7 +637,7 @@ public class Rabbit extends Animal implements VariantHolder<Rabbit.Variant> { @@ -637,7 +637,7 @@ public class Rabbit extends Animal implements VariantHolder<Rabbit.Variant> {
@@ -118,7 +118,7 @@ index 857d4a70c8a9678e689ee0807f42cd5f7cc4902d..59aaa76f9c5b4639a632ef6ee6709298
} }
diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java
index f43c37505e9e7c171b62cfc0621e425f5726dc3d..1db7bb084674cea5dd2bbf4d5ed05048414aa85c 100644 index ecc0f221fca332b6f4d8feb72dbafc52e1002a23..dc6b0446336b8d689f8273c9ffe1d3c27cf1281a 100644
--- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java
+++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java
@@ -127,7 +127,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @@ -127,7 +127,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM
@@ -131,7 +131,7 @@ index f43c37505e9e7c171b62cfc0621e425f5726dc3d..1db7bb084674cea5dd2bbf4d5ed05048
} }
diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
index 587a6cd7bd4cb724a778f98677eb09b0eb494349..ce82644310d6f5fe4a60294004cd663c2c12f06b 100644 index 81cf89bc57af0f43d05ba93256255155bf0c4d53..2b0aac1e4291549efa6391cb3b41492184c9aeda 100644
--- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
+++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
@@ -612,7 +612,7 @@ public class EnderDragon extends Mob implements Enemy { @@ -612,7 +612,7 @@ public class EnderDragon extends Mob implements Enemy {
@@ -144,7 +144,7 @@ index 587a6cd7bd4cb724a778f98677eb09b0eb494349..ce82644310d6f5fe4a60294004cd663c
// flag1 = this.level().removeBlock(blockposition, false) || flag1; // flag1 = this.level().removeBlock(blockposition, false) || flag1;
flag1 = true; flag1 = true;
diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
index 52f6459b0bfff7991da6cb0deda1b15664c4d00b..aabc5523343e16974d7fb2af476ba84c9059f119 100644 index b39a7dfb910e99f04275fa8e246581f5ccc27afa..f68f330e5a36f1c3cbf956a39b5b2886e30a37d2 100644
--- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
+++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
@@ -496,7 +496,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @@ -496,7 +496,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
@@ -157,7 +157,7 @@ index 52f6459b0bfff7991da6cb0deda1b15664c4d00b..aabc5523343e16974d7fb2af476ba84c
j = Mth.floor(this.getX()); j = Mth.floor(this.getX());
int i1 = Mth.floor(this.getZ()); int i1 = Mth.floor(this.getZ());
diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
index 094ed658eaedcd88461330de0816e29b7db8acd2..2189cf09f7d9299ff9a3e4b62d3e199caedfbc0d 100644 index 47b82549b401acca5e9a5702d41674652ab6853f..87960051bd908822cf8c0d5c7b2d1faa6396c92f 100644
--- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
+++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
@@ -532,7 +532,15 @@ public class EnderMan extends Monster implements NeutralMob { @@ -532,7 +532,15 @@ public class EnderMan extends Monster implements NeutralMob {
@@ -195,7 +195,7 @@ index 094ed658eaedcd88461330de0816e29b7db8acd2..2189cf09f7d9299ff9a3e4b62d3e199c
@Override @Override
diff --git a/src/main/java/net/minecraft/world/entity/monster/Evoker.java b/src/main/java/net/minecraft/world/entity/monster/Evoker.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Evoker.java b/src/main/java/net/minecraft/world/entity/monster/Evoker.java
index f113c96af07eeceef2e51cd310d46b2763c8224b..629e29bfeb26f686d41a27218b3caca601018bed 100644 index f71a70a72ba0bb01c26291ad9dbdd3b01bbf6ee7..ea2a2c56f94d03b73a5e3a06f91aee7fcb0867f4 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Evoker.java --- a/src/main/java/net/minecraft/world/entity/monster/Evoker.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Evoker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Evoker.java
@@ -341,7 +341,7 @@ public class Evoker extends SpellcasterIllager { @@ -341,7 +341,7 @@ public class Evoker extends SpellcasterIllager {
@@ -208,7 +208,7 @@ index f113c96af07eeceef2e51cd310d46b2763c8224b..629e29bfeb26f686d41a27218b3caca6
} else { } else {
List<Sheep> list = Evoker.this.level().getNearbyEntities(Sheep.class, this.wololoTargeting, Evoker.this, Evoker.this.getBoundingBox().inflate(16.0D, 4.0D, 16.0D)); List<Sheep> list = Evoker.this.level().getNearbyEntities(Sheep.class, this.wololoTargeting, Evoker.this, Evoker.this.getBoundingBox().inflate(16.0D, 4.0D, 16.0D));
diff --git a/src/main/java/net/minecraft/world/entity/monster/Ravager.java b/src/main/java/net/minecraft/world/entity/monster/Ravager.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Ravager.java b/src/main/java/net/minecraft/world/entity/monster/Ravager.java
index c35266d89bfacf193662738366a8c91943b29250..62ffd3ca6276df8e111198aae523ec7de47df691 100644 index 990a4ef6e2eccc228b06ba4cb3aadfce0733de5f..e62cb511e78c272346a8735081d1b4b93a6d3c5d 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Ravager.java --- a/src/main/java/net/minecraft/world/entity/monster/Ravager.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Ravager.java +++ b/src/main/java/net/minecraft/world/entity/monster/Ravager.java
@@ -190,7 +190,7 @@ public class Ravager extends Raider { @@ -190,7 +190,7 @@ public class Ravager extends Raider {
@@ -221,7 +221,7 @@ index c35266d89bfacf193662738366a8c91943b29250..62ffd3ca6276df8e111198aae523ec7d
AABB axisalignedbb = this.getBoundingBox().inflate(0.2D); AABB axisalignedbb = this.getBoundingBox().inflate(0.2D);
Iterator iterator = BlockPos.betweenClosed(Mth.floor(axisalignedbb.minX), Mth.floor(axisalignedbb.minY), Mth.floor(axisalignedbb.minZ), Mth.floor(axisalignedbb.maxX), Mth.floor(axisalignedbb.maxY), Mth.floor(axisalignedbb.maxZ)).iterator(); Iterator iterator = BlockPos.betweenClosed(Mth.floor(axisalignedbb.minX), Mth.floor(axisalignedbb.minY), Mth.floor(axisalignedbb.minZ), Mth.floor(axisalignedbb.maxX), Mth.floor(axisalignedbb.maxY), Mth.floor(axisalignedbb.maxZ)).iterator();
diff --git a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java
index 1d91686e354cffeec7431f0a70e22b39225ed2b7..b4b5f2d564accb4e7b0361af4f67d22185755d51 100644 index 0a78b3231700ff4ec4bc6ab9d3cbaebc261601e1..dbde54c4a616d6baba672a470b9886c9714133b9 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java --- a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java +++ b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java
@@ -208,7 +208,7 @@ public class Silverfish extends Monster { @@ -208,7 +208,7 @@ public class Silverfish extends Monster {
@@ -243,7 +243,7 @@ index 1d91686e354cffeec7431f0a70e22b39225ed2b7..b4b5f2d564accb4e7b0361af4f67d221
BlockPos blockposition = BlockPos.containing(this.mob.getX(), this.mob.getY() + 0.5D, this.mob.getZ()).relative(this.selectedDirection); BlockPos blockposition = BlockPos.containing(this.mob.getX(), this.mob.getY() + 0.5D, this.mob.getZ()).relative(this.selectedDirection);
BlockState iblockdata = this.mob.level().getBlockState(blockposition); BlockState iblockdata = this.mob.level().getBlockState(blockposition);
diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java
index bd084cfaecee1098b29e03f75d64e3fecd10a1ea..98ee31528c93ae1a1d294d47c7722ac8b017edbe 100644 index 24b8fc91775bc3a305b0293916600d34fdd7eb00..b40e43c94c7a7bb39e4428c4fa35f5697d8e954c 100644
--- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java --- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java
+++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java
@@ -428,7 +428,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento @@ -428,7 +428,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento
@@ -374,7 +374,7 @@ index 1942649e868fc985a488034c411a6721595ecc67..7495e0e8beedad59fff24ebf189b58b3
} }
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 06cb62b768168c06a7b454e0e7bb105b750729c3..86ad2600050ad695942ed3fdd5af910d5d6d8db0 100644 index 63b8d72db812f29fbd82bc62fd21d0d53413bd79..3b53d35be4e5ddf0514556d8515c31ddf3bf6b3a 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -117,8 +117,11 @@ public class PurpurWorldConfig { @@ -117,8 +117,11 @@ public class PurpurWorldConfig {
@@ -437,236 +437,243 @@ index 06cb62b768168c06a7b454e0e7bb105b750729c3..86ad2600050ad695942ed3fdd5af910d
+ turtleEggsBypassMobGriefing = getBoolean("blocks.turtle_egg.bypass-mob-griefing", turtleEggsBypassMobGriefing); + turtleEggsBypassMobGriefing = getBoolean("blocks.turtle_egg.bypass-mob-griefing", turtleEggsBypassMobGriefing);
} }
public double axolotlMaxHealth = 14.0D; public boolean babiesAreRidable = true;
@@ -657,6 +672,7 @@ public class PurpurWorldConfig { @@ -719,6 +734,7 @@ public class PurpurWorldConfig {
public double creeperMaxHealth = 20.0D; public double creeperMaxHealth = 20.0D;
public double creeperChargedChance = 0.0D; public double creeperChargedChance = 0.0D;
public boolean creeperAllowGriefing = true; public boolean creeperAllowGriefing = true;
+ public boolean creeperBypassMobGriefing = false; + public boolean creeperBypassMobGriefing = false;
private void creeperSettings() { private void creeperSettings() {
if (PurpurConfig.version < 10) { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable);
double oldValue = getDouble("mobs.creeper.attributes.max-health", creeperMaxHealth); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater);
@@ -666,6 +682,7 @@ public class PurpurWorldConfig { @@ -731,6 +747,7 @@ public class PurpurWorldConfig {
creeperMaxHealth = getDouble("mobs.creeper.attributes.max_health", creeperMaxHealth); creeperMaxHealth = getDouble("mobs.creeper.attributes.max_health", creeperMaxHealth);
creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance); creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance);
creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing); creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing);
+ creeperBypassMobGriefing = getBoolean("mobs.creeper.bypass-mob-griefing", creeperBypassMobGriefing); + creeperBypassMobGriefing = getBoolean("mobs.creeper.bypass-mob-griefing", creeperBypassMobGriefing);
} }
public double dolphinMaxHealth = 10.0D; public boolean dolphinRidable = false;
@@ -734,6 +751,7 @@ public class PurpurWorldConfig { @@ -842,6 +859,7 @@ public class PurpurWorldConfig {
public double enderDragonMaxY = 320D;
public double enderDragonMaxHealth = 200.0D; public double enderDragonMaxHealth = 200.0D;
public boolean enderDragonAlwaysDropsFullExp = false; public boolean enderDragonAlwaysDropsFullExp = false;
+ public boolean enderDragonBypassMobGriefing = false; + public boolean enderDragonBypassMobGriefing = false;
private void enderDragonSettings() { private void enderDragonSettings() {
if (PurpurConfig.version < 8) { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable);
double oldValue = getDouble("mobs.ender_dragon.max-health", enderDragonMaxHealth); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater);
@@ -746,11 +764,13 @@ public class PurpurWorldConfig { @@ -858,6 +876,7 @@ public class PurpurWorldConfig {
} }
enderDragonMaxHealth = getDouble("mobs.ender_dragon.attributes.max_health", enderDragonMaxHealth); enderDragonMaxHealth = getDouble("mobs.ender_dragon.attributes.max_health", enderDragonMaxHealth);
enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp); enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp);
+ enderDragonBypassMobGriefing = getBoolean("mobs.ender_dragon.bypass-mob-griefing", enderDragonBypassMobGriefing); + enderDragonBypassMobGriefing = getBoolean("mobs.ender_dragon.bypass-mob-griefing", enderDragonBypassMobGriefing);
} }
public boolean endermanRidable = false;
@@ -866,6 +885,7 @@ public class PurpurWorldConfig {
public double endermanMaxHealth = 40.0D; public double endermanMaxHealth = 40.0D;
public boolean endermanAllowGriefing = true; public boolean endermanAllowGriefing = true;
public boolean endermanDespawnEvenWithBlock = false; public boolean endermanDespawnEvenWithBlock = false;
+ public boolean endermanBypassMobGriefing = false; + public boolean endermanBypassMobGriefing = false;
private void endermanSettings() { private void endermanSettings() {
if (PurpurConfig.version < 10) { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable);
double oldValue = getDouble("mobs.enderman.attributes.max-health", endermanMaxHealth); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater);
@@ -760,6 +780,7 @@ public class PurpurWorldConfig { @@ -878,6 +898,7 @@ public class PurpurWorldConfig {
endermanMaxHealth = getDouble("mobs.enderman.attributes.max_health", endermanMaxHealth); endermanMaxHealth = getDouble("mobs.enderman.attributes.max_health", endermanMaxHealth);
endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing); endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing);
endermanDespawnEvenWithBlock = getBoolean("mobs.enderman.can-despawn-with-held-block", endermanDespawnEvenWithBlock); endermanDespawnEvenWithBlock = getBoolean("mobs.enderman.can-despawn-with-held-block", endermanDespawnEvenWithBlock);
+ endermanBypassMobGriefing = getBoolean("mobs.enderman.bypass-mob-griefing", endermanBypassMobGriefing); + endermanBypassMobGriefing = getBoolean("mobs.enderman.bypass-mob-griefing", endermanBypassMobGriefing);
} }
public double endermiteMaxHealth = 8.0D; public boolean endermiteRidable = false;
@@ -773,6 +794,7 @@ public class PurpurWorldConfig { @@ -900,6 +921,7 @@ public class PurpurWorldConfig {
} public boolean evokerRidableInWater = true;
public boolean evokerControllable = true;
public double evokerMaxHealth = 24.0D; public double evokerMaxHealth = 24.0D;
+ public boolean evokerBypassMobGriefing = false; + public boolean evokerBypassMobGriefing = false;
private void evokerSettings() { private void evokerSettings() {
if (PurpurConfig.version < 10) { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable);
double oldValue = getDouble("mobs.evoker.attributes.max-health", evokerMaxHealth); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater);
@@ -780,11 +802,13 @@ public class PurpurWorldConfig { @@ -910,6 +932,7 @@ public class PurpurWorldConfig {
set("mobs.evoker.attributes.max_health", oldValue); set("mobs.evoker.attributes.max_health", oldValue);
} }
evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth); evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth);
+ evokerBypassMobGriefing = getBoolean("mobs.evoker.bypass-mob-griefing", evokerBypassMobGriefing); + evokerBypassMobGriefing = getBoolean("mobs.evoker.bypass-mob-griefing", evokerBypassMobGriefing);
} }
public boolean foxRidable = false;
@@ -918,6 +941,7 @@ public class PurpurWorldConfig {
public double foxMaxHealth = 10.0D; public double foxMaxHealth = 10.0D;
public boolean foxTypeChangesWithTulips = false; public boolean foxTypeChangesWithTulips = false;
public int foxBreedingTicks = 6000; public int foxBreedingTicks = 6000;
+ public boolean foxBypassMobGriefing = false; + public boolean foxBypassMobGriefing = false;
private void foxSettings() { private void foxSettings() {
if (PurpurConfig.version < 10) { foxRidable = getBoolean("mobs.fox.ridable", foxRidable);
double oldValue = getDouble("mobs.fox.attributes.max-health", foxMaxHealth); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater);
@@ -794,6 +818,7 @@ public class PurpurWorldConfig { @@ -930,6 +954,7 @@ public class PurpurWorldConfig {
foxMaxHealth = getDouble("mobs.fox.attributes.max_health", foxMaxHealth); foxMaxHealth = getDouble("mobs.fox.attributes.max_health", foxMaxHealth);
foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips); foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips);
foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks); foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks);
+ foxBypassMobGriefing = getBoolean("mobs.fox.bypass-mob-griefing", foxBypassMobGriefing); + foxBypassMobGriefing = getBoolean("mobs.fox.bypass-mob-griefing", foxBypassMobGriefing);
} }
public int frogBreedingTicks = 6000; public boolean frogRidable = false;
@@ -1114,6 +1139,7 @@ public class PurpurWorldConfig { @@ -1374,6 +1399,7 @@ public class PurpurWorldConfig {
} public boolean piglinRidableInWater = true;
public boolean piglinControllable = true;
public double piglinMaxHealth = 16.0D; public double piglinMaxHealth = 16.0D;
+ public boolean piglinBypassMobGriefing = false; + public boolean piglinBypassMobGriefing = false;
private void piglinSettings() { private void piglinSettings() {
if (PurpurConfig.version < 10) { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable);
double oldValue = getDouble("mobs.piglin.attributes.max-health", piglinMaxHealth); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater);
@@ -1121,6 +1147,7 @@ public class PurpurWorldConfig { @@ -1384,6 +1410,7 @@ public class PurpurWorldConfig {
set("mobs.piglin.attributes.max_health", oldValue); set("mobs.piglin.attributes.max_health", oldValue);
} }
piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth); piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth);
+ piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); + piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing);
} }
public double piglinBruteMaxHealth = 50.0D; public boolean piglinBruteRidable = false;
@@ -1134,6 +1161,7 @@ public class PurpurWorldConfig { @@ -1406,6 +1433,7 @@ public class PurpurWorldConfig {
} public boolean pillagerRidableInWater = true;
public boolean pillagerControllable = true;
public double pillagerMaxHealth = 24.0D; public double pillagerMaxHealth = 24.0D;
+ public boolean pillagerBypassMobGriefing = false; + public boolean pillagerBypassMobGriefing = false;
private void pillagerSettings() { private void pillagerSettings() {
if (PurpurConfig.version < 10) { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable);
double oldValue = getDouble("mobs.pillager.attributes.max-health", pillagerMaxHealth); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater);
@@ -1141,6 +1169,7 @@ public class PurpurWorldConfig { @@ -1416,6 +1444,7 @@ public class PurpurWorldConfig {
set("mobs.pillager.attributes.max_health", oldValue); set("mobs.pillager.attributes.max_health", oldValue);
} }
pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth);
+ pillagerBypassMobGriefing = getBoolean("mobs.pillager.bypass-mob-griefing", pillagerBypassMobGriefing); + pillagerBypassMobGriefing = getBoolean("mobs.pillager.bypass-mob-griefing", pillagerBypassMobGriefing);
} }
public double polarBearMaxHealth = 30.0D; public boolean polarBearRidable = false;
@@ -1174,6 +1203,7 @@ public class PurpurWorldConfig { @@ -1462,6 +1491,7 @@ public class PurpurWorldConfig {
public double rabbitNaturalToast = 0.0D; public double rabbitNaturalToast = 0.0D;
public double rabbitNaturalKiller = 0.0D; public double rabbitNaturalKiller = 0.0D;
public int rabbitBreedingTicks = 6000; public int rabbitBreedingTicks = 6000;
+ public boolean rabbitBypassMobGriefing = false; + public boolean rabbitBypassMobGriefing = false;
private void rabbitSettings() { private void rabbitSettings() {
if (PurpurConfig.version < 10) { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable);
double oldValue = getDouble("mobs.rabbit.attributes.max-health", rabbitMaxHealth); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater);
@@ -1184,9 +1214,11 @@ public class PurpurWorldConfig { @@ -1475,12 +1505,14 @@ public class PurpurWorldConfig {
rabbitNaturalToast = getDouble("mobs.rabbit.spawn-toast-chance", rabbitNaturalToast); rabbitNaturalToast = getDouble("mobs.rabbit.spawn-toast-chance", rabbitNaturalToast);
rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller); rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller);
rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks); rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks);
+ rabbitBypassMobGriefing = getBoolean("mobs.rabbit.bypass-mob-griefing", rabbitBypassMobGriefing); + rabbitBypassMobGriefing = getBoolean("mobs.rabbit.bypass-mob-griefing", rabbitBypassMobGriefing);
} }
public boolean ravagerRidable = false;
public boolean ravagerRidableInWater = false;
public boolean ravagerControllable = true;
public double ravagerMaxHealth = 100.0D; public double ravagerMaxHealth = 100.0D;
+ public boolean ravagerBypassMobGriefing = false; + public boolean ravagerBypassMobGriefing = false;
private void ravagerSettings() { private void ravagerSettings() {
if (PurpurConfig.version < 10) { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable);
double oldValue = getDouble("mobs.ravager.attributes.max-health", ravagerMaxHealth); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater);
@@ -1194,6 +1226,7 @@ public class PurpurWorldConfig { @@ -1491,6 +1523,7 @@ public class PurpurWorldConfig {
set("mobs.ravager.attributes.max_health", oldValue); set("mobs.ravager.attributes.max_health", oldValue);
} }
ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth); ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth);
+ ravagerBypassMobGriefing = getBoolean("mobs.ravager.bypass-mob-griefing", ravagerBypassMobGriefing); + ravagerBypassMobGriefing = getBoolean("mobs.ravager.bypass-mob-griefing", ravagerBypassMobGriefing);
} }
public double salmonMaxHealth = 3.0D; public boolean salmonRidable = false;
@@ -1208,6 +1241,7 @@ public class PurpurWorldConfig { @@ -1512,6 +1545,7 @@ public class PurpurWorldConfig {
public boolean sheepControllable = true;
public double sheepMaxHealth = 8.0D; public double sheepMaxHealth = 8.0D;
public int sheepBreedingTicks = 6000; public int sheepBreedingTicks = 6000;
+ public boolean sheepBypassMobGriefing = false; + public boolean sheepBypassMobGriefing = false;
private void sheepSettings() { private void sheepSettings() {
if (PurpurConfig.version < 10) { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable);
double oldValue = getDouble("mobs.sheep.attributes.max-health", sheepMaxHealth); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater);
@@ -1216,6 +1250,7 @@ public class PurpurWorldConfig { @@ -1523,6 +1557,7 @@ public class PurpurWorldConfig {
} }
sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth);
sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks);
+ sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing); + sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing);
} }
public double shulkerMaxHealth = 30.0D; public boolean shulkerRidable = false;
@@ -1229,6 +1264,7 @@ public class PurpurWorldConfig { @@ -1545,6 +1580,7 @@ public class PurpurWorldConfig {
} public boolean silverfishRidableInWater = true;
public boolean silverfishControllable = true;
public double silverfishMaxHealth = 8.0D; public double silverfishMaxHealth = 8.0D;
+ public boolean silverfishBypassMobGriefing = false; + public boolean silverfishBypassMobGriefing = false;
private void silverfishSettings() { private void silverfishSettings() {
if (PurpurConfig.version < 10) { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable);
double oldValue = getDouble("mobs.silverfish.attributes.max-health", silverfishMaxHealth); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater);
@@ -1236,6 +1272,7 @@ public class PurpurWorldConfig { @@ -1555,6 +1591,7 @@ public class PurpurWorldConfig {
set("mobs.silverfish.attributes.max_health", oldValue); set("mobs.silverfish.attributes.max_health", oldValue);
} }
silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max_health", silverfishMaxHealth); silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max_health", silverfishMaxHealth);
+ silverfishBypassMobGriefing = getBoolean("mobs.silverfish.bypass-mob-griefing", silverfishBypassMobGriefing); + silverfishBypassMobGriefing = getBoolean("mobs.silverfish.bypass-mob-griefing", silverfishBypassMobGriefing);
} }
public double skeletonMaxHealth = 20.0D; public boolean skeletonRidable = false;
@@ -1293,6 +1330,7 @@ public class PurpurWorldConfig { @@ -1631,6 +1668,7 @@ public class PurpurWorldConfig {
public int snowGolemSnowBallMax = 20; public int snowGolemSnowBallMax = 20;
public float snowGolemSnowBallModifier = 10.0F; public float snowGolemSnowBallModifier = 10.0F;
public double snowGolemAttackDistance = 1.25D; public double snowGolemAttackDistance = 1.25D;
+ public boolean snowGolemBypassMobGriefing = false; + public boolean snowGolemBypassMobGriefing = false;
private void snowGolemSettings() { private void snowGolemSettings() {
snowGolemLeaveTrailWhenRidden = getBoolean("mobs.snow_golem.leave-trail-when-ridden", snowGolemLeaveTrailWhenRidden); snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable);
if (PurpurConfig.version < 10) { snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater);
@@ -1307,6 +1345,7 @@ public class PurpurWorldConfig { @@ -1648,6 +1686,7 @@ public class PurpurWorldConfig {
snowGolemSnowBallMax = getInt("mobs.snow_golem.max-shoot-interval-ticks", snowGolemSnowBallMax); snowGolemSnowBallMax = getInt("mobs.snow_golem.max-shoot-interval-ticks", snowGolemSnowBallMax);
snowGolemSnowBallModifier = (float) getDouble("mobs.snow_golem.snow-ball-modifier", snowGolemSnowBallModifier); snowGolemSnowBallModifier = (float) getDouble("mobs.snow_golem.snow-ball-modifier", snowGolemSnowBallModifier);
snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance); snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance);
+ snowGolemBypassMobGriefing = getBoolean("mobs.snow_golem.bypass-mob-griefing", snowGolemBypassMobGriefing); + snowGolemBypassMobGriefing = getBoolean("mobs.snow_golem.bypass-mob-griefing", snowGolemBypassMobGriefing);
} }
public double snifferMaxHealth = 14.0D; public boolean snifferRidable = false;
@@ -1429,6 +1468,7 @@ public class PurpurWorldConfig { @@ -1832,6 +1871,7 @@ public class PurpurWorldConfig {
public boolean villagerCanBeLeashed = false; public boolean villagerCanBeLeashed = false;
public boolean villagerCanBreed = true; public boolean villagerCanBreed = true;
public int villagerBreedingTicks = 6000; public int villagerBreedingTicks = 6000;
+ public boolean villagerBypassMobGriefing = false; + public boolean villagerBypassMobGriefing = false;
private void villagerSettings() { private void villagerSettings() {
if (PurpurConfig.version < 10) { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
double oldValue = getDouble("mobs.villager.attributes.max-health", villagerMaxHealth); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
@@ -1440,6 +1480,7 @@ public class PurpurWorldConfig { @@ -1846,6 +1886,7 @@ public class PurpurWorldConfig {
villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed);
villagerCanBreed = getBoolean("mobs.villager.can-breed", villagerCanBreed); villagerCanBreed = getBoolean("mobs.villager.can-breed", villagerCanBreed);
villagerBreedingTicks = getInt("mobs.villager.breeding-delay-ticks", villagerBreedingTicks); villagerBreedingTicks = getInt("mobs.villager.breeding-delay-ticks", villagerBreedingTicks);
+ villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); + villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing);
} }
public double vindicatorMaxHealth = 24.0D; public boolean vindicatorRidable = false;
@@ -1481,6 +1522,7 @@ public class PurpurWorldConfig { @@ -1918,6 +1959,7 @@ public class PurpurWorldConfig {
public double witherMaxHealth = 300.0D; public double witherMaxHealth = 300.0D;
public float witherHealthRegenAmount = 1.0f; public float witherHealthRegenAmount = 1.0f;
public int witherHealthRegenDelay = 20; public int witherHealthRegenDelay = 20;
+ public boolean witherBypassMobGriefing = false; + public boolean witherBypassMobGriefing = false;
private void witherSettings() { private void witherSettings() {
if (PurpurConfig.version < 8) { witherRidable = getBoolean("mobs.wither.ridable", witherRidable);
double oldValue = getDouble("mobs.wither.max-health", witherMaxHealth); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater);
@@ -1494,6 +1536,7 @@ public class PurpurWorldConfig { @@ -1935,6 +1977,7 @@ public class PurpurWorldConfig {
witherMaxHealth = getDouble("mobs.wither.attributes.max_health", witherMaxHealth); witherMaxHealth = getDouble("mobs.wither.attributes.max_health", witherMaxHealth);
witherHealthRegenAmount = (float) getDouble("mobs.wither.health-regen-amount", witherHealthRegenAmount); witherHealthRegenAmount = (float) getDouble("mobs.wither.health-regen-amount", witherHealthRegenAmount);
witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay); witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay);
+ witherBypassMobGriefing = getBoolean("mobs.wither.bypass-mob-griefing", witherBypassMobGriefing); + witherBypassMobGriefing = getBoolean("mobs.wither.bypass-mob-griefing", witherBypassMobGriefing);
} }
public double witherSkeletonMaxHealth = 20.0D; public boolean witherSkeletonRidable = false;
@@ -1544,6 +1587,7 @@ public class PurpurWorldConfig { @@ -2006,6 +2049,7 @@ public class PurpurWorldConfig {
public double zombieJockeyChance = 0.05D; public double zombieJockeyChance = 0.05D;
public boolean zombieJockeyTryExistingChickens = true; public boolean zombieJockeyTryExistingChickens = true;
public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieAggressiveTowardsVillagerWhenLagging = true;
+ public boolean zombieBypassMobGriefing = false; + public boolean zombieBypassMobGriefing = false;
private void zombieSettings() { private void zombieSettings() {
if (PurpurConfig.version < 10) { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable);
double oldValue = getDouble("mobs.zombie.attributes.max-health", zombieMaxHealth); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater);
@@ -1556,6 +1600,7 @@ public class PurpurWorldConfig { @@ -2021,6 +2065,7 @@ public class PurpurWorldConfig {
zombieJockeyChance = getDouble("mobs.zombie.jockey.chance", zombieJockeyChance); zombieJockeyChance = getDouble("mobs.zombie.jockey.chance", zombieJockeyChance);
zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens); zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens);
zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging); zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging);
+ zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); + zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing);
} }
public double zombieHorseMaxHealthMin = 15.0D; public boolean zombieHorseRidableInWater = false;

View File

@@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. along with this program. If not, see <https://www.gnu.org/licenses/>.
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 9f213ed6b14c24fd9cb5fefb689d72032a883d09..67382c78e35110090e2f54f1fd11b12a19b2c529 100644 index 68233db015138b0a615a65eac8c11afc42f7a1c6..8c2327fa0af4c2148cf6bab7f5960f81660c6259 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java --- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -1795,7 +1795,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -1795,7 +1795,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -30,7 +30,7 @@ index 9f213ed6b14c24fd9cb5fefb689d72032a883d09..67382c78e35110090e2f54f1fd11b12a
if (entity instanceof Boat) { if (entity instanceof Boat) {
diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
index 1406cdd79c7183522f1f5c0b0edc6166ff9d4ed9..cfe4c6f3316a9bcb3fb77bbb839525bed5527b17 100644 index 9eb196ee4061bb4c5713f33e8b16d91ec52711cd..59257815c1a3ec30e2c00f63a557c0555db77ef2 100644
--- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java --- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
+++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java +++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java
@@ -99,10 +99,12 @@ public class ArmorStand extends LivingEntity { @@ -99,10 +99,12 @@ public class ArmorStand extends LivingEntity {
@@ -54,8 +54,8 @@ index 1406cdd79c7183522f1f5c0b0edc6166ff9d4ed9..cfe4c6f3316a9bcb3fb77bbb839525be
+ // Purpur start + // Purpur start
+ @Override + @Override
+ public void updateInWaterStateAndDoWaterCurrentPushing() { + public void updateInWaterStateAndDoWaterCurrentPushing() {
+ if (this.level.purpurConfig.armorstandWaterMovement && + if (this.level().purpurConfig.armorstandWaterMovement &&
+ (this.level.purpurConfig.armorstandWaterFence || !(level.getBlockState(blockPosition().below()).getBlock() instanceof net.minecraft.world.level.block.FenceBlock))) + (this.level().purpurConfig.armorstandWaterFence || !(level.getBlockState(blockPosition().below()).getBlock() instanceof net.minecraft.world.level.block.FenceBlock)))
+ super.updateInWaterStateAndDoWaterCurrentPushing(); + super.updateInWaterStateAndDoWaterCurrentPushing();
+ } + }
+ +
@@ -66,7 +66,7 @@ index 1406cdd79c7183522f1f5c0b0edc6166ff9d4ed9..cfe4c6f3316a9bcb3fb77bbb839525be
+ // Purpur end + // Purpur end
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index f09bf510749064c34d4fb1401a68090529bb6d6b..ec0fdbe239a8b402ed9e2154904b31294a6f92b2 100644 index 9e10f9f5299f0e56ccc50692e11f20605182a2c4..4b8514a938a9029ab9b1af8698beb12e1b33e039 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -101,10 +101,16 @@ public class PurpurWorldConfig { @@ -101,10 +101,16 @@ public class PurpurWorldConfig {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Fix stuck in portals
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index 4a133de61090ab78ad9bc7d02e30c917024711ab..eac27b6ff180369cd0c9423d176a5a7bf7406ab1 100644 index faab60eb03989338f5376c22148c98a0407a36a5..0ecd8b6bf8696b6aac50b91f16450ba5925c0115 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -1271,6 +1271,7 @@ public class ServerPlayer extends Player { @@ -1271,6 +1271,7 @@ public class ServerPlayer extends Player {
@@ -17,7 +17,7 @@ index 4a133de61090ab78ad9bc7d02e30c917024711ab..eac27b6ff180369cd0c9423d176a5a7b
// CraftBukkit end // CraftBukkit end
this.setServerLevel(worldserver); this.setServerLevel(worldserver);
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 67382c78e35110090e2f54f1fd11b12a19b2c529..4a6c13e2f9835219161b3b83e0b3aecafb4eed73 100644 index 8c2327fa0af4c2148cf6bab7f5960f81660c6259..10dca8fdfea6c4c98bd36684598fab425cbd348a 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java --- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -2996,12 +2996,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -2996,12 +2996,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -27,9 +27,9 @@ index 67382c78e35110090e2f54f1fd11b12a19b2c529..4a6c13e2f9835219161b3b83e0b3aeca
+ public BlockPos portalPos = BlockPos.ZERO; // Purpur + public BlockPos portalPos = BlockPos.ZERO; // Purpur
public void handleInsidePortal(BlockPos pos) { public void handleInsidePortal(BlockPos pos) {
if (this.isOnPortalCooldown()) { if (this.isOnPortalCooldown()) {
+ if (!(level.purpurConfig.playerFixStuckPortal && this instanceof Player && !pos.equals(portalPos))) // Purpur + if (!(level().purpurConfig.playerFixStuckPortal && this instanceof Player && !pos.equals(portalPos))) // Purpur
this.setPortalCooldown(); this.setPortalCooldown();
} else if (level.purpurConfig.entitiesCanUsePortals || this instanceof ServerPlayer) { // Purpur } else if (level().purpurConfig.entitiesCanUsePortals || this instanceof ServerPlayer) { // Purpur
if (!this.level().isClientSide && !pos.equals(this.portalEntrancePos)) { if (!this.level().isClientSide && !pos.equals(this.portalEntrancePos)) {
this.portalEntrancePos = pos.immutable(); this.portalEntrancePos = pos.immutable();
+ portalPos = BlockPos.ZERO; // Purpur + portalPos = BlockPos.ZERO; // Purpur
@@ -37,7 +37,7 @@ index 67382c78e35110090e2f54f1fd11b12a19b2c529..4a6c13e2f9835219161b3b83e0b3aeca
this.isInsidePortal = true; this.isInsidePortal = true;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index ec0fdbe239a8b402ed9e2154904b31294a6f92b2..a53c3fdbf11c8c33407aa0082f788848ac77dc34 100644 index 4b8514a938a9029ab9b1af8698beb12e1b33e039..705c6b3ae0db79d0ef0a9eaea504381145b4af21 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -337,6 +337,7 @@ public class PurpurWorldConfig { @@ -337,6 +337,7 @@ public class PurpurWorldConfig {

File diff suppressed because it is too large Load Diff

View File

@@ -7,7 +7,7 @@ Adds a configuration option that ensures a player in Creative always tames a tam
This essentially allows Creative mode players to tame animals on their first try. This essentially allows Creative mode players to tame animals on their first try.
diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java
index b463fdb812f1c402885f1538e1c213aea1374e5c..88cae271386b1502cd80880a5c24995994d6ff45 100644 index b463fdb812f1c402885f1538e1c213aea1374e5c..952b244a7423d44a0e755764e4b4b5a83ee7f42b 100644
--- a/src/main/java/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java --- a/src/main/java/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java
+++ b/src/main/java/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java +++ b/src/main/java/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java
@@ -63,7 +63,7 @@ public class RunAroundLikeCrazyGoal extends Goal { @@ -63,7 +63,7 @@ public class RunAroundLikeCrazyGoal extends Goal {
@@ -15,12 +15,12 @@ index b463fdb812f1c402885f1538e1c213aea1374e5c..88cae271386b1502cd80880a5c249959
// CraftBukkit - fire EntityTameEvent // CraftBukkit - fire EntityTameEvent
- if (j > 0 && this.horse.getRandom().nextInt(j) < i && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTameEvent(this.horse, ((org.bukkit.craftbukkit.entity.CraftHumanEntity) this.horse.getBukkitEntity().getPassenger()).getHandle()).isCancelled()) { - if (j > 0 && this.horse.getRandom().nextInt(j) < i && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTameEvent(this.horse, ((org.bukkit.craftbukkit.entity.CraftHumanEntity) this.horse.getBukkitEntity().getPassenger()).getHandle()).isCancelled()) {
+ if ((this.horse.level.purpurConfig.alwaysTameInCreative && ((Player) entity).getAbilities().instabuild) || (j > 0 && this.horse.getRandom().nextInt(j) < i && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTameEvent(this.horse, ((org.bukkit.craftbukkit.entity.CraftHumanEntity) this.horse.getBukkitEntity().getPassenger()).getHandle()).isCancelled())) { // Purpur + if ((this.horse.level().purpurConfig.alwaysTameInCreative && ((Player) entity).getAbilities().instabuild) || (j > 0 && this.horse.getRandom().nextInt(j) < i && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTameEvent(this.horse, ((org.bukkit.craftbukkit.entity.CraftHumanEntity) this.horse.getBukkitEntity().getPassenger()).getHandle()).isCancelled())) { // Purpur
this.horse.tameWithName((Player) entity); this.horse.tameWithName((Player) entity);
return; return;
} }
diff --git a/src/main/java/net/minecraft/world/entity/animal/Cat.java b/src/main/java/net/minecraft/world/entity/animal/Cat.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Cat.java b/src/main/java/net/minecraft/world/entity/animal/Cat.java
index fa437d0af82292797c1e4432c57a8384c7aacdc4..93a0adaf4ad080439a8df1688d5b5b241ead07c6 100644 index 1554e4a0e068e06ec121adf56421f8332132f062..7f1763b820a0c5dc69bdf6cdf14a97a283ba5916 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Cat.java --- a/src/main/java/net/minecraft/world/entity/animal/Cat.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java
@@ -470,7 +470,7 @@ public class Cat extends TamableAnimal implements VariantHolder<CatVariant> { @@ -470,7 +470,7 @@ public class Cat extends TamableAnimal implements VariantHolder<CatVariant> {
@@ -28,12 +28,12 @@ index fa437d0af82292797c1e4432c57a8384c7aacdc4..93a0adaf4ad080439a8df1688d5b5b24
} else if (this.isFood(itemstack)) { } else if (this.isFood(itemstack)) {
this.usePlayerItem(player, hand, itemstack); this.usePlayerItem(player, hand, itemstack);
- if (this.random.nextInt(3) == 0 && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTameEvent(this, player).isCancelled()) { // CraftBukkit - if (this.random.nextInt(3) == 0 && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTameEvent(this, player).isCancelled()) { // CraftBukkit
+ if ((this.level.purpurConfig.alwaysTameInCreative && player.getAbilities().instabuild) || (this.random.nextInt(3) == 0 && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTameEvent(this, player).isCancelled())) { // CraftBukkit // Purpur + if ((this.level().purpurConfig.alwaysTameInCreative && player.getAbilities().instabuild) || (this.random.nextInt(3) == 0 && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTameEvent(this, player).isCancelled())) { // CraftBukkit // Purpur
this.tame(player); this.tame(player);
this.setOrderedToSit(true); this.setOrderedToSit(true);
this.level().broadcastEntityEvent(this, (byte) 7); this.level().broadcastEntityEvent(this, (byte) 7);
diff --git a/src/main/java/net/minecraft/world/entity/animal/Parrot.java b/src/main/java/net/minecraft/world/entity/animal/Parrot.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Parrot.java b/src/main/java/net/minecraft/world/entity/animal/Parrot.java
index db3607ad07da5ad2c08f4fedbd5d8cfc2c3f4f04..4bbf7b2afa98ed0dae079596cd99606bb20d63fa 100644 index a2dafa064697219fcfe7824ba3ca81396063ecb2..08935a1f2c4a3f43483719686e5baab5063cdfce 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java
@@ -334,7 +334,7 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder<Parrot @@ -334,7 +334,7 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder<Parrot
@@ -41,12 +41,12 @@ index db3607ad07da5ad2c08f4fedbd5d8cfc2c3f4f04..4bbf7b2afa98ed0dae079596cd99606b
if (!this.level().isClientSide) { if (!this.level().isClientSide) {
- if (this.random.nextInt(10) == 0 && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTameEvent(this, player).isCancelled()) { // CraftBukkit - if (this.random.nextInt(10) == 0 && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTameEvent(this, player).isCancelled()) { // CraftBukkit
+ if ((this.level.purpurConfig.alwaysTameInCreative && player.getAbilities().instabuild) || (this.random.nextInt(10) == 0 && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTameEvent(this, player).isCancelled())) { // CraftBukkit // Purpur + if ((this.level().purpurConfig.alwaysTameInCreative && player.getAbilities().instabuild) || (this.random.nextInt(10) == 0 && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTameEvent(this, player).isCancelled())) { // CraftBukkit // Purpur
this.tame(player); this.tame(player);
this.level().broadcastEntityEvent(this, (byte) 7); this.level().broadcastEntityEvent(this, (byte) 7);
} else { } else {
diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java
index 1054218628fdefc1aa5356de25ebe4f2672ee3de..70d122820f214cd60854d7fbb7ecc8e1223cab7b 100644 index 4cd58a67c0af8019e802812c1e2ff893591d4c5f..79e67987f8077133f447ba5c7e1d5edb676e18e8 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java
@@ -543,7 +543,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { @@ -543,7 +543,7 @@ public class Wolf extends TamableAnimal implements NeutralMob {
@@ -59,7 +59,7 @@ index 1054218628fdefc1aa5356de25ebe4f2672ee3de..70d122820f214cd60854d7fbb7ecc8e1
this.navigation.stop(); this.navigation.stop();
this.setTarget((LivingEntity) null); this.setTarget((LivingEntity) null);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 104a3e088e0d181e140a68ddf5271a221d51e979..9d25a55c797d3ed36a0fd6f1d1fd62c7c6647fa9 100644 index a902a1fff34382032fd56a6672b2c7225378527c..908f7d4193e987550fb6ecf9b132fc35deb389b1 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -119,6 +119,7 @@ public class PurpurWorldConfig { @@ -119,6 +119,7 @@ public class PurpurWorldConfig {

View File

@@ -5,62 +5,62 @@ Subject: [PATCH] Configs for if Wither/Ender Dragon can ride vehicles
diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
index 13d694ad77770aa4eb93010726772935095096b2..e839eb1757fff4f16dcf147898bdc6806c6109d5 100644 index f90b0ae4678da2ffa7d0a693003e05191d07f4bf..8a8895abe609b3be02aa896c40e4a2a240fd86f3 100644
--- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
+++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java
@@ -1187,6 +1187,7 @@ public class EnderDragon extends Mob implements Enemy { @@ -1187,6 +1187,7 @@ public class EnderDragon extends Mob implements Enemy {
@Override @Override
protected boolean canRide(Entity entity) { protected boolean canRide(Entity entity) {
+ if (this.level.purpurConfig.enderDragonCanRideVehicles) return this.boardingCooldown <= 0; // Purpur + if (this.level().purpurConfig.enderDragonCanRideVehicles) return this.boardingCooldown <= 0; // Purpur
return false; return false;
} }
diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
index f6b7a0ac70f3aff5458dd0843f27f8ea367b0346..c9b27c1479e09c65533f173546d6692e77df46da 100644 index 17e44da8b4419ae19f0205e7208b450e68607c79..faa77256f116d2b9c9ad931238d10a994c63c484 100644
--- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
+++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
@@ -742,6 +742,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @@ -742,6 +742,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
@Override @Override
protected boolean canRide(Entity entity) { protected boolean canRide(Entity entity) {
+ if (this.level.purpurConfig.witherCanRideVehicles) return this.boardingCooldown <= 0; // Purpur + if (this.level().purpurConfig.witherCanRideVehicles) return this.boardingCooldown <= 0; // Purpur
return false; return false;
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 1aee23f75e0ab74909c853a288c481376b8a8e2a..7c0279f34f380e42c8f0f1dbb8806266655aa6f7 100644 index 2a8338e4ddb765349e373f9de0f6c82ba44a1c89..b40c2439ec48255d6d46db4af4d0df2b2e5a3a7b 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -838,6 +838,7 @@ public class PurpurWorldConfig { @@ -946,6 +946,7 @@ public class PurpurWorldConfig {
public boolean enderDragonAlwaysDropsFullExp = false; public boolean enderDragonAlwaysDropsFullExp = false;
public boolean enderDragonBypassMobGriefing = false; public boolean enderDragonBypassMobGriefing = false;
public boolean enderDragonTakeDamageFromWater = false; public boolean enderDragonTakeDamageFromWater = false;
+ public boolean enderDragonCanRideVehicles = false; + public boolean enderDragonCanRideVehicles = false;
private void enderDragonSettings() { private void enderDragonSettings() {
if (PurpurConfig.version < 8) { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable);
double oldValue = getDouble("mobs.ender_dragon.max-health", enderDragonMaxHealth); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater);
@@ -852,6 +853,7 @@ public class PurpurWorldConfig { @@ -964,6 +965,7 @@ public class PurpurWorldConfig {
enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp); enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp);
enderDragonBypassMobGriefing = getBoolean("mobs.ender_dragon.bypass-mob-griefing", enderDragonBypassMobGriefing); enderDragonBypassMobGriefing = getBoolean("mobs.ender_dragon.bypass-mob-griefing", enderDragonBypassMobGriefing);
enderDragonTakeDamageFromWater = getBoolean("mobs.ender_dragon.takes-damage-from-water", enderDragonTakeDamageFromWater); enderDragonTakeDamageFromWater = getBoolean("mobs.ender_dragon.takes-damage-from-water", enderDragonTakeDamageFromWater);
+ enderDragonCanRideVehicles = getBoolean("mobs.ender_dragon.can-ride-vehicles", enderDragonCanRideVehicles); + enderDragonCanRideVehicles = getBoolean("mobs.ender_dragon.can-ride-vehicles", enderDragonCanRideVehicles);
} }
public double endermanMaxHealth = 40.0D; public boolean endermanRidable = false;
@@ -1711,6 +1713,7 @@ public class PurpurWorldConfig { @@ -2148,6 +2150,7 @@ public class PurpurWorldConfig {
public int witherHealthRegenDelay = 20; public int witherHealthRegenDelay = 20;
public boolean witherBypassMobGriefing = false; public boolean witherBypassMobGriefing = false;
public boolean witherTakeDamageFromWater = false; public boolean witherTakeDamageFromWater = false;
+ public boolean witherCanRideVehicles = false; + public boolean witherCanRideVehicles = false;
private void witherSettings() { private void witherSettings() {
if (PurpurConfig.version < 8) { witherRidable = getBoolean("mobs.wither.ridable", witherRidable);
double oldValue = getDouble("mobs.wither.max-health", witherMaxHealth); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater);
@@ -1726,6 +1729,7 @@ public class PurpurWorldConfig { @@ -2167,6 +2170,7 @@ public class PurpurWorldConfig {
witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay); witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay);
witherBypassMobGriefing = getBoolean("mobs.wither.bypass-mob-griefing", witherBypassMobGriefing); witherBypassMobGriefing = getBoolean("mobs.wither.bypass-mob-griefing", witherBypassMobGriefing);
witherTakeDamageFromWater = getBoolean("mobs.wither.takes-damage-from-water", witherTakeDamageFromWater); witherTakeDamageFromWater = getBoolean("mobs.wither.takes-damage-from-water", witherTakeDamageFromWater);
+ witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles); + witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles);
} }
public double witherSkeletonMaxHealth = 20.0D; public boolean witherSkeletonRidable = false;

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] One Punch Man!
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index eac15c03b842840a47a0b2d1b0f3ea3920a621a5..c7f53783c210f79a70577aa3d4f53b5410f26387 100644 index 182436020d2376101f5863f80b4b6d3d9ebd6a2e..234b92b189e921768ea83ef4f0c128266735cc6e 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -2278,6 +2278,20 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -2278,6 +2278,20 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -13,7 +13,7 @@ index eac15c03b842840a47a0b2d1b0f3ea3920a621a5..c7f53783c210f79a70577aa3d4f53b54
} }
+ // Purpur start + // Purpur start
+ if (damagesource.getEntity() instanceof net.minecraft.world.entity.player.Player player && damagesource.getEntity().level.purpurConfig.creativeOnePunch) { + if (damagesource.getEntity() instanceof net.minecraft.world.entity.player.Player player && damagesource.getEntity().level().purpurConfig.creativeOnePunch) {
+ if (player.isCreative()) { + if (player.isCreative()) {
+ double attackDamage = 0; + double attackDamage = 0;
+ for (AttributeModifier modifier : player.getMainHandItem().getAttributeModifiers(EquipmentSlot.MAINHAND).get(Attributes.ATTACK_DAMAGE)) { + for (AttributeModifier modifier : player.getMainHandItem().getAttributeModifiers(EquipmentSlot.MAINHAND).get(Attributes.ATTACK_DAMAGE)) {
@@ -30,7 +30,7 @@ index eac15c03b842840a47a0b2d1b0f3ea3920a621a5..c7f53783c210f79a70577aa3d4f53b54
if (human) { if (human) {
// PAIL: Be sure to drag all this code from the EntityHuman subclass each update. // PAIL: Be sure to drag all this code from the EntityHuman subclass each update.
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 7d0feb23c572580eaeb31bc6e150181f06581d45..93076aa8497009c920f05511ad23e04a7341663b 100644 index 56843046b160360e14847322a9d2f5186577eaf8..502333b443d5c8b5a2f21b8c60f651a640eb83c7 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -348,6 +348,7 @@ public class PurpurWorldConfig { @@ -348,6 +348,7 @@ public class PurpurWorldConfig {

View File

@@ -8,7 +8,7 @@ Subject: [PATCH] Configurable Ender Pearl cooldown, damage, and Endermite RNG
- Endermite spawn chance - Endermite spawn chance
diff --git a/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java b/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java diff --git a/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java b/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java
index e8114d89a3129e56c0329410a49ded63cc77cb4c..33eacb5e839805ec9e6f01116b9047a40e5e857e 100644 index e8114d89a3129e56c0329410a49ded63cc77cb4c..5c12355ed8b9eb1367173dd956975db279e2fb73 100644
--- a/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java --- a/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java
+++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java +++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java
@@ -68,7 +68,7 @@ public class ThrownEnderpearl extends ThrowableItemProjectile { @@ -68,7 +68,7 @@ public class ThrownEnderpearl extends ThrowableItemProjectile {
@@ -25,7 +25,7 @@ index e8114d89a3129e56c0329410a49ded63cc77cb4c..33eacb5e839805ec9e6f01116b9047a4
entity.resetFallDistance(); entity.resetFallDistance();
CraftEventFactory.entityDamage = this; CraftEventFactory.entityDamage = this;
- entity.hurt(this.damageSources().fall(), 5.0F); - entity.hurt(this.damageSources().fall(), 5.0F);
+ entity.hurt(this.damageSources().fall(), this.level.purpurConfig.enderPearlDamage); // Purpur + entity.hurt(this.damageSources().fall(), this.level().purpurConfig.enderPearlDamage); // Purpur
CraftEventFactory.entityDamage = null; CraftEventFactory.entityDamage = null;
} }
// CraftBukkit end // CraftBukkit end
@@ -43,7 +43,7 @@ index 749ab72edc0d2e9c6f1161415ab8d59d3d6ca976..897c202c0905040072a06fdfa2032a7f
// Paper end // Paper end
if (user instanceof net.minecraft.server.level.ServerPlayer) { if (user instanceof net.minecraft.server.level.ServerPlayer) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 93076aa8497009c920f05511ad23e04a7341663b..bf9c93335f00500c8d48b1cb4617b24e0f5e28cb 100644 index 502333b443d5c8b5a2f21b8c60f651a640eb83c7..4ca7563d46d96b2591e9f90338070c031c087b1d 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -203,6 +203,10 @@ public class PurpurWorldConfig { @@ -203,6 +203,10 @@ public class PurpurWorldConfig {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Config to ignore nearby mobs when sleeping
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index eac27b6ff180369cd0c9423d176a5a7bf7406ab1..7583d43ad95586ca584e44eaca52d9b1ee33e2be 100644 index 0ecd8b6bf8696b6aac50b91f16450ba5925c0115..af916fb00a9112231327abc641fa2bf5897dbde8 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -1429,7 +1429,7 @@ public class ServerPlayer extends Player { @@ -1429,7 +1429,7 @@ public class ServerPlayer extends Player {
@@ -13,12 +13,12 @@ index eac27b6ff180369cd0c9423d176a5a7bf7406ab1..7583d43ad95586ca584e44eaca52d9b1
}); });
- if (!list.isEmpty()) { - if (!list.isEmpty()) {
+ if (!this.level.purpurConfig.playerSleepNearMonsters && !list.isEmpty()) { // Purpur + if (!this.level().purpurConfig.playerSleepNearMonsters && !list.isEmpty()) { // Purpur
return Either.left(Player.BedSleepingProblem.NOT_SAFE); return Either.left(Player.BedSleepingProblem.NOT_SAFE);
} }
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index bf9c93335f00500c8d48b1cb4617b24e0f5e28cb..0181457ff8743856d08a6505ce32072a20eb420f 100644 index 4ca7563d46d96b2591e9f90338070c031c087b1d..9e5e3d2b14569d15fc3994494889aea416f252a9 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -357,6 +357,7 @@ public class PurpurWorldConfig { @@ -357,6 +357,7 @@ public class PurpurWorldConfig {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Add back player spawned endermite API
diff --git a/src/main/java/net/minecraft/world/entity/monster/Endermite.java b/src/main/java/net/minecraft/world/entity/monster/Endermite.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Endermite.java b/src/main/java/net/minecraft/world/entity/monster/Endermite.java
index 41c20875b3a92b1271125e087c98be927cd192fe..de69f93dc3e4fea716b540238cdc871245c9217a 100644 index cb0a2d522176a2d1d9785f95d205d4d924912a32..0cbf5a32611848e15e83eb0fc6f16c68337753c5 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Endermite.java --- a/src/main/java/net/minecraft/world/entity/monster/Endermite.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Endermite.java +++ b/src/main/java/net/minecraft/world/entity/monster/Endermite.java
@@ -31,6 +31,7 @@ import net.minecraft.world.level.block.state.BlockState; @@ -31,6 +31,7 @@ import net.minecraft.world.level.block.state.BlockState;
@@ -17,7 +17,7 @@ index 41c20875b3a92b1271125e087c98be927cd192fe..de69f93dc3e4fea716b540238cdc8712
public Endermite(EntityType<? extends Endermite> type, Level world) { public Endermite(EntityType<? extends Endermite> type, Level world) {
super(type, world); super(type, world);
@@ -64,6 +65,14 @@ public class Endermite extends Monster { @@ -64,6 +65,14 @@ public class Endermite extends Monster {
return this.level.purpurConfig.endermiteTakeDamageFromWater; return this.level().purpurConfig.endermiteTakeDamageFromWater;
} }
+ public boolean isPlayerSpawned() { + public boolean isPlayerSpawned() {
@@ -47,7 +47,7 @@ index 41c20875b3a92b1271125e087c98be927cd192fe..de69f93dc3e4fea716b540238cdc8712
@Override @Override
diff --git a/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java b/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java diff --git a/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java b/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java
index 33eacb5e839805ec9e6f01116b9047a40e5e857e..560f2c800f89ae75d8695fe9fb47a250d22099ca 100644 index 5c12355ed8b9eb1367173dd956975db279e2fb73..d7359c675707eade00f9b737fd67ef8d066e813f 100644
--- a/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java --- a/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java
+++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java +++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java
@@ -72,6 +72,7 @@ public class ThrownEnderpearl extends ThrowableItemProjectile { @@ -72,6 +72,7 @@ public class ThrownEnderpearl extends ThrowableItemProjectile {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Config Enderman aggressiveness towards Endermites
diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
index ae2916ed826b28a3737327b3a6b2725225bcaf61..2416f348374afe2a788bd106630e9bf6b60f602c 100644 index 002ea677568e4d4a13509bb5c880341a742dac83..1e544c8fa21d028f7c3ac66d66c2362c01326a54 100644
--- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
+++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
@@ -128,7 +128,7 @@ public class EnderMan extends Monster implements NeutralMob { @@ -128,7 +128,7 @@ public class EnderMan extends Monster implements NeutralMob {
@@ -13,23 +13,24 @@ index ae2916ed826b28a3737327b3a6b2725225bcaf61..2416f348374afe2a788bd106630e9bf6
this.targetSelector.addGoal(1, new EnderMan.EndermanLookForPlayerGoal(this, this::isAngryAt)); this.targetSelector.addGoal(1, new EnderMan.EndermanLookForPlayerGoal(this, this::isAngryAt));
this.targetSelector.addGoal(2, new HurtByTargetGoal(this, new Class[0])); this.targetSelector.addGoal(2, new HurtByTargetGoal(this, new Class[0]));
- this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Endermite.class, true, false)); - this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Endermite.class, true, false));
+ this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Endermite.class, 10, true, false, (entityliving) -> entityliving.level.purpurConfig.endermanAggroEndermites && entityliving instanceof Endermite endermite && (!entityliving.level.purpurConfig.endermanAggroEndermitesOnlyIfPlayerSpawned || endermite.isPlayerSpawned()))); // Purpur + this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Endermite.class, 10, true, false, (entityliving) -> entityliving.level().purpurConfig.endermanAggroEndermites && entityliving instanceof Endermite endermite && (!entityliving.level().purpurConfig.endermanAggroEndermitesOnlyIfPlayerSpawned || endermite.isPlayerSpawned()))); // Purpur
this.targetSelector.addGoal(4, new ResetUniversalAngerTargetGoal<>(this, false)); this.targetSelector.addGoal(4, new ResetUniversalAngerTargetGoal<>(this, false));
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 0181457ff8743856d08a6505ce32072a20eb420f..5066a371334258808cca67f6f268fca76faf2af2 100644 index 9e5e3d2b14569d15fc3994494889aea416f252a9..217e5cf9ea0fde511170cd6522ec9605dff9ac78 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -881,17 +881,25 @@ public class PurpurWorldConfig { @@ -996,6 +996,8 @@ public class PurpurWorldConfig {
public boolean endermanDespawnEvenWithBlock = false; public boolean endermanDespawnEvenWithBlock = false;
public boolean endermanBypassMobGriefing = false; public boolean endermanBypassMobGriefing = false;
public boolean endermanTakeDamageFromWater = true; public boolean endermanTakeDamageFromWater = true;
+ public boolean endermanAggroEndermites = true; + public boolean endermanAggroEndermites = true;
+ public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false; + public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false;
private void endermanSettings() { private void endermanSettings() {
if (PurpurConfig.version < 10) { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable);
double oldValue = getDouble("mobs.enderman.attributes.max-health", endermanMaxHealth); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater);
@@ -1005,11 +1007,17 @@ public class PurpurWorldConfig {
set("mobs.enderman.attributes.max-health", null); set("mobs.enderman.attributes.max-health", null);
set("mobs.enderman.attributes.max_health", oldValue); set("mobs.enderman.attributes.max_health", oldValue);
} }
@@ -46,4 +47,4 @@ index 0181457ff8743856d08a6505ce32072a20eb420f..5066a371334258808cca67f6f268fca7
+ endermanAggroEndermitesOnlyIfPlayerSpawned = getBoolean("mobs.enderman.aggressive-towards-endermites-only-spawned-by-player-thrown-ender-pearls", endermanAggroEndermitesOnlyIfPlayerSpawned); + endermanAggroEndermitesOnlyIfPlayerSpawned = getBoolean("mobs.enderman.aggressive-towards-endermites-only-spawned-by-player-thrown-ender-pearls", endermanAggroEndermitesOnlyIfPlayerSpawned);
} }
public double endermiteMaxHealth = 8.0D; public boolean endermiteRidable = false;

View File

@@ -7,7 +7,7 @@ Prevents Enderman from becoming aggresive towards players that are wearing a Dra
Adds functionality to a useless item! Adds functionality to a useless item!
diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
index 2416f348374afe2a788bd106630e9bf6b60f602c..cb0e27962b77a1f62c5d561b361b51cf279e7cce 100644 index 1e544c8fa21d028f7c3ac66d66c2362c01326a54..6f7dc1f55d52a0957dc0f3b19644e3dce33ccb0f 100644
--- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
+++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
@@ -265,7 +265,7 @@ public class EnderMan extends Monster implements NeutralMob { @@ -265,7 +265,7 @@ public class EnderMan extends Monster implements NeutralMob {
@@ -15,24 +15,24 @@ index 2416f348374afe2a788bd106630e9bf6b60f602c..cb0e27962b77a1f62c5d561b361b51cf
ItemStack itemstack = (ItemStack) player.getInventory().armor.get(3); ItemStack itemstack = (ItemStack) player.getInventory().armor.get(3);
- if (itemstack.is(Blocks.CARVED_PUMPKIN.asItem())) { - if (itemstack.is(Blocks.CARVED_PUMPKIN.asItem())) {
+ if (this.level.purpurConfig.endermanDisableStareAggro || itemstack.is(Blocks.CARVED_PUMPKIN.asItem()) || (this.level.purpurConfig.endermanIgnorePlayerDragonHead && itemstack.is(net.minecraft.world.item.Items.DRAGON_HEAD))) { // Purpur + if (this.level().purpurConfig.endermanDisableStareAggro || itemstack.is(Blocks.CARVED_PUMPKIN.asItem()) || (this.level().purpurConfig.endermanIgnorePlayerDragonHead && itemstack.is(net.minecraft.world.item.Items.DRAGON_HEAD))) { // Purpur
return false; return false;
} else if (org.purpurmc.purpur.PurpurConfig.endermanShortHeight && source.is(net.minecraft.world.damagesource.DamageTypes.IN_WALL)) { return false; // Purpur - no suffocation damage if short height } else if (org.purpurmc.purpur.PurpurConfig.endermanShortHeight && source.is(net.minecraft.world.damagesource.DamageTypes.IN_WALL)) { return false; // Purpur - no suffocation damage if short height
} else { } else {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 5066a371334258808cca67f6f268fca76faf2af2..7786ff6e4adb8180090eb17298fa7147d4b1848f 100644 index 217e5cf9ea0fde511170cd6522ec9605dff9ac78..45cb176b9ab23b9451d68fbb9165cdbcf84ad5b3 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -883,6 +883,8 @@ public class PurpurWorldConfig { @@ -998,6 +998,8 @@ public class PurpurWorldConfig {
public boolean endermanTakeDamageFromWater = true; public boolean endermanTakeDamageFromWater = true;
public boolean endermanAggroEndermites = true; public boolean endermanAggroEndermites = true;
public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false; public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false;
+ public boolean endermanIgnorePlayerDragonHead = false; + public boolean endermanIgnorePlayerDragonHead = false;
+ public boolean endermanDisableStareAggro = false; + public boolean endermanDisableStareAggro = false;
private void endermanSettings() { private void endermanSettings() {
if (PurpurConfig.version < 10) { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable);
double oldValue = getDouble("mobs.enderman.attributes.max-health", endermanMaxHealth); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater);
@@ -900,6 +902,8 @@ public class PurpurWorldConfig { @@ -1018,6 +1020,8 @@ public class PurpurWorldConfig {
endermanTakeDamageFromWater = getBoolean("mobs.enderman.takes-damage-from-water", endermanTakeDamageFromWater); endermanTakeDamageFromWater = getBoolean("mobs.enderman.takes-damage-from-water", endermanTakeDamageFromWater);
endermanAggroEndermites = getBoolean("mobs.enderman.aggressive-towards-endermites", endermanAggroEndermites); endermanAggroEndermites = getBoolean("mobs.enderman.aggressive-towards-endermites", endermanAggroEndermites);
endermanAggroEndermitesOnlyIfPlayerSpawned = getBoolean("mobs.enderman.aggressive-towards-endermites-only-spawned-by-player-thrown-ender-pearls", endermanAggroEndermitesOnlyIfPlayerSpawned); endermanAggroEndermitesOnlyIfPlayerSpawned = getBoolean("mobs.enderman.aggressive-towards-endermites-only-spawned-by-player-thrown-ender-pearls", endermanAggroEndermitesOnlyIfPlayerSpawned);
@@ -40,4 +40,4 @@ index 5066a371334258808cca67f6f268fca76faf2af2..7786ff6e4adb8180090eb17298fa7147
+ endermanDisableStareAggro = getBoolean("mobs.enderman.disable-player-stare-aggression", endermanDisableStareAggro); + endermanDisableStareAggro = getBoolean("mobs.enderman.disable-player-stare-aggression", endermanDisableStareAggro);
} }
public double endermiteMaxHealth = 8.0D; public boolean endermiteRidable = false;

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] Config to disable Llama caravans
Disables the mechanic where llamas follow leashed llamas. Disables the mechanic where llamas follow leashed llamas.
diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java
index 849f0c7c6d13df00d90211a48d8b56ab156812b8..194dd3a896ed859c23c84ae7cb6147d545cbe8cb 100644 index 849f0c7c6d13df00d90211a48d8b56ab156812b8..3fc9528201fb96d6a0f905afe0b6a82ec88a7235 100644
--- a/src/main/java/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java --- a/src/main/java/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java
+++ b/src/main/java/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java +++ b/src/main/java/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java
@@ -22,7 +22,7 @@ public class LlamaFollowCaravanGoal extends Goal { @@ -22,7 +22,7 @@ public class LlamaFollowCaravanGoal extends Goal {
@@ -14,12 +14,12 @@ index 849f0c7c6d13df00d90211a48d8b56ab156812b8..194dd3a896ed859c23c84ae7cb6147d5
@Override @Override
public boolean canUse() { public boolean canUse() {
- if (!this.llama.shouldJoinCaravan) return false; // Purpur - if (!this.llama.shouldJoinCaravan) return false; // Purpur
+ if (!this.llama.level.purpurConfig.llamaJoinCaravans || !this.llama.shouldJoinCaravan) return false; // Purpur + if (!this.llama.level().purpurConfig.llamaJoinCaravans || !this.llama.shouldJoinCaravan) return false; // Purpur
if (!this.llama.isLeashed() && !this.llama.inCaravan()) { if (!this.llama.isLeashed() && !this.llama.inCaravan()) {
List<Entity> list = this.llama.level().getEntities(this.llama, this.llama.getBoundingBox().inflate(9.0D, 4.0D, 9.0D), (entity) -> { List<Entity> list = this.llama.level().getEntities(this.llama, this.llama.getBoundingBox().inflate(9.0D, 4.0D, 9.0D), (entity) -> {
EntityType<?> entityType = entity.getType(); EntityType<?> entityType = entity.getType();
diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java
index 9440c55671473e717ad1019019c5edd38898e387..d8eac8a7f5919c8eda5999c1bbc8fab098a69b08 100644 index 2c5f4ead1141269a029176140c4df848c75b9620..26ed1eef3b38e643dfc6738e4b7880c9d1c9dc20 100644
--- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java
+++ b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java
@@ -540,7 +540,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V @@ -540,7 +540,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V
@@ -27,15 +27,15 @@ index 9440c55671473e717ad1019019c5edd38898e387..d8eac8a7f5919c8eda5999c1bbc8fab0
public void joinCaravan(Llama llama) { public void joinCaravan(Llama llama) {
- if (!shouldJoinCaravan || !new org.purpurmc.purpur.event.entity.LlamaJoinCaravanEvent((org.bukkit.entity.Llama) getBukkitEntity(), (org.bukkit.entity.Llama) llama.getBukkitEntity()).callEvent()) return; // Purpur - if (!shouldJoinCaravan || !new org.purpurmc.purpur.event.entity.LlamaJoinCaravanEvent((org.bukkit.entity.Llama) getBukkitEntity(), (org.bukkit.entity.Llama) llama.getBukkitEntity()).callEvent()) return; // Purpur
+ if (!this.level.purpurConfig.llamaJoinCaravans || !shouldJoinCaravan || !new org.purpurmc.purpur.event.entity.LlamaJoinCaravanEvent((org.bukkit.entity.Llama) getBukkitEntity(), (org.bukkit.entity.Llama) llama.getBukkitEntity()).callEvent()) return; // Purpur + if (!this.level().purpurConfig.llamaJoinCaravans || !shouldJoinCaravan || !new org.purpurmc.purpur.event.entity.LlamaJoinCaravanEvent((org.bukkit.entity.Llama) getBukkitEntity(), (org.bukkit.entity.Llama) llama.getBukkitEntity()).callEvent()) return; // Purpur
this.caravanHead = llama; this.caravanHead = llama;
this.caravanHead.caravanTail = this; this.caravanHead.caravanTail = this;
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 0b6c9ed87baf5f81c9a4b43355ad81825f40c5f8..ff50c2f80efb1a721e06ffd0059802a3f89d434e 100644 index 62df1c335f8c6923938768db59f56fec3e1bf939..eb698e1443f0abc3827b08840674d0e92cbb6dd3 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1130,6 +1130,7 @@ public class PurpurWorldConfig { @@ -1330,6 +1330,7 @@ public class PurpurWorldConfig {
public double llamaMovementSpeedMax = 0.175D; public double llamaMovementSpeedMax = 0.175D;
public int llamaBreedingTicks = 6000; public int llamaBreedingTicks = 6000;
public boolean llamaTakeDamageFromWater = false; public boolean llamaTakeDamageFromWater = false;
@@ -43,11 +43,11 @@ index 0b6c9ed87baf5f81c9a4b43355ad81825f40c5f8..ff50c2f80efb1a721e06ffd0059802a3
private void llamaSettings() { private void llamaSettings() {
llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable);
llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater);
@@ -1149,6 +1150,7 @@ public class PurpurWorldConfig { @@ -1352,6 +1353,7 @@ public class PurpurWorldConfig {
llamaMovementSpeedMax = getDouble("mobs.llama.attributes.movement_speed.max", llamaMovementSpeedMax); llamaMovementSpeedMax = getDouble("mobs.llama.attributes.movement_speed.max", llamaMovementSpeedMax);
llamaBreedingTicks = getInt("mobs.llama.breeding-delay-ticks", llamaBreedingTicks); llamaBreedingTicks = getInt("mobs.llama.breeding-delay-ticks", llamaBreedingTicks);
llamaTakeDamageFromWater = getBoolean("mobs.llama.takes-damage-from-water", llamaTakeDamageFromWater); llamaTakeDamageFromWater = getBoolean("mobs.llama.takes-damage-from-water", llamaTakeDamageFromWater);
+ llamaJoinCaravans = getBoolean("mobs.llama.join-caravans", llamaJoinCaravans); + llamaJoinCaravans = getBoolean("mobs.llama.join-caravans", llamaJoinCaravans);
} }
public String magmaCubeMaxHealth = "size * size"; public boolean magmaCubeRidable = false;

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] Config to make Creepers explode on death
Creepers exploded after being killed in the alpha days. This brings that back. Creepers exploded after being killed in the alpha days. This brings that back.
diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java
index acc548126a06f40ec3473301b36367e107050086..13a1ede4fc72ef2811250ac4991ecd2bc10dbe95 100644 index 6e80ea775596c5804b674234b7d59f4c941a49dc..56aaf99a94944de42f437e18806381e3978c305a 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java
@@ -60,6 +60,7 @@ public class Creeper extends Monster implements PowerableMob { @@ -60,6 +60,7 @@ public class Creeper extends Monster implements PowerableMob {
@@ -18,7 +18,7 @@ index acc548126a06f40ec3473301b36367e107050086..13a1ede4fc72ef2811250ac4991ecd2b
private int prevSpacebarCharge = 0; private int prevSpacebarCharge = 0;
private int powerToggleDelay = 0; private int powerToggleDelay = 0;
@@ -268,6 +269,14 @@ public class Creeper extends Monster implements PowerableMob { @@ -268,6 +269,14 @@ public class Creeper extends Monster implements PowerableMob {
return this.level.purpurConfig.creeperTakeDamageFromWater; return this.level().purpurConfig.creeperTakeDamageFromWater;
} }
+ @Override + @Override
@@ -50,22 +50,22 @@ index acc548126a06f40ec3473301b36367e107050086..13a1ede4fc72ef2811250ac4991ecd2b
private void spawnLingeringCloud() { private void spawnLingeringCloud() {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index ff50c2f80efb1a721e06ffd0059802a3f89d434e..3e597d7ed6a6dd1c5726e76e0fe76687a3cb4b03 100644 index eb698e1443f0abc3827b08840674d0e92cbb6dd3..336fdbe44d9d0dfbfd88dcbcd51d4c82ad66df03 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -771,6 +771,7 @@ public class PurpurWorldConfig { @@ -833,6 +833,7 @@ public class PurpurWorldConfig {
public boolean creeperAllowGriefing = true; public boolean creeperAllowGriefing = true;
public boolean creeperBypassMobGriefing = false; public boolean creeperBypassMobGriefing = false;
public boolean creeperTakeDamageFromWater = false; public boolean creeperTakeDamageFromWater = false;
+ public boolean creeperExplodeWhenKilled = false; + public boolean creeperExplodeWhenKilled = false;
private void creeperSettings() { private void creeperSettings() {
if (PurpurConfig.version < 10) { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable);
double oldValue = getDouble("mobs.creeper.attributes.max-health", creeperMaxHealth); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater);
@@ -782,6 +783,7 @@ public class PurpurWorldConfig { @@ -847,6 +848,7 @@ public class PurpurWorldConfig {
creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing); creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing);
creeperBypassMobGriefing = getBoolean("mobs.creeper.bypass-mob-griefing", creeperBypassMobGriefing); creeperBypassMobGriefing = getBoolean("mobs.creeper.bypass-mob-griefing", creeperBypassMobGriefing);
creeperTakeDamageFromWater = getBoolean("mobs.creeper.takes-damage-from-water", creeperTakeDamageFromWater); creeperTakeDamageFromWater = getBoolean("mobs.creeper.takes-damage-from-water", creeperTakeDamageFromWater);
+ creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled); + creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled);
} }
public double dolphinMaxHealth = 10.0D; public boolean dolphinRidable = false;

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Configurable ravager griefable blocks list
diff --git a/src/main/java/net/minecraft/world/entity/monster/Ravager.java b/src/main/java/net/minecraft/world/entity/monster/Ravager.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Ravager.java b/src/main/java/net/minecraft/world/entity/monster/Ravager.java
index fb4e452e6c7e8701a3b2ebfe28a458026040c0e2..6a0674fd0b7920bae5ba08a6f9919fbd838962e5 100644 index 6180ebf48c64fc004f33ecc382953e72f2fb7578..9083bc138d322cbb0b060c73dadc427aaa574bd9 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Ravager.java --- a/src/main/java/net/minecraft/world/entity/monster/Ravager.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Ravager.java +++ b/src/main/java/net/minecraft/world/entity/monster/Ravager.java
@@ -205,7 +205,7 @@ public class Ravager extends Raider { @@ -205,7 +205,7 @@ public class Ravager extends Raider {
@@ -13,7 +13,7 @@ index fb4e452e6c7e8701a3b2ebfe28a458026040c0e2..6a0674fd0b7920bae5ba08a6f9919fbd
Block block = iblockdata.getBlock(); Block block = iblockdata.getBlock();
- if (block instanceof LeavesBlock && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this, blockposition, iblockdata.getFluidState().createLegacyBlock()).isCancelled()) { // CraftBukkit // Paper - if (block instanceof LeavesBlock && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this, blockposition, iblockdata.getFluidState().createLegacyBlock()).isCancelled()) { // CraftBukkit // Paper
+ if (this.level.purpurConfig.ravagerGriefableBlocks.contains(block) && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this, blockposition, iblockdata.getFluidState().createLegacyBlock()).isCancelled()) { // CraftBukkit // Paper + if (this.level().purpurConfig.ravagerGriefableBlocks.contains(block) && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this, blockposition, iblockdata.getFluidState().createLegacyBlock()).isCancelled()) { // CraftBukkit // Paper
flag = this.level().destroyBlock(blockposition, true, this) || flag; flag = this.level().destroyBlock(blockposition, true, this) || flag;
} }
} }
@@ -31,18 +31,18 @@ index cf7007cabe4ba7505f2728e79e4c56e2d1bc878b..c431ec19212821ba7722c073e5ee6ad7
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 3e597d7ed6a6dd1c5726e76e0fe76687a3cb4b03..dc2363808b6041ac1e60829e4e9a6a6c459a159b 100644 index 336fdbe44d9d0dfbfd88dcbcd51d4c82ad66df03..339038dcf393653de973b55c090672b2f2f8fa26 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1405,6 +1405,7 @@ public class PurpurWorldConfig { @@ -1699,6 +1699,7 @@ public class PurpurWorldConfig {
public double ravagerMaxHealth = 100.0D; public double ravagerMaxHealth = 100.0D;
public boolean ravagerBypassMobGriefing = false; public boolean ravagerBypassMobGriefing = false;
public boolean ravagerTakeDamageFromWater = false; public boolean ravagerTakeDamageFromWater = false;
+ public List<Block> ravagerGriefableBlocks = new ArrayList<>(); + public List<Block> ravagerGriefableBlocks = new ArrayList<>();
private void ravagerSettings() { private void ravagerSettings() {
if (PurpurConfig.version < 10) { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable);
double oldValue = getDouble("mobs.ravager.attributes.max-health", ravagerMaxHealth); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater);
@@ -1414,6 +1415,23 @@ public class PurpurWorldConfig { @@ -1711,6 +1712,23 @@ public class PurpurWorldConfig {
ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth); ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth);
ravagerBypassMobGriefing = getBoolean("mobs.ravager.bypass-mob-griefing", ravagerBypassMobGriefing); ravagerBypassMobGriefing = getBoolean("mobs.ravager.bypass-mob-griefing", ravagerBypassMobGriefing);
ravagerTakeDamageFromWater = getBoolean("mobs.ravager.takes-damage-from-water", ravagerTakeDamageFromWater); ravagerTakeDamageFromWater = getBoolean("mobs.ravager.takes-damage-from-water", ravagerTakeDamageFromWater);
@@ -65,4 +65,4 @@ index 3e597d7ed6a6dd1c5726e76e0fe76687a3cb4b03..dc2363808b6041ac1e60829e4e9a6a6c
+ }); + });
} }
public double salmonMaxHealth = 3.0D; public boolean salmonRidable = false;

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Sneak to bulk process composter
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
index bb7ad618fad7f11a02d7e088e2c05bfffaf0b41d..b9041e46a4fafeac004cf8a0ef9d7daaa9bfb0ff 100644 index bb7ad618fad7f11a02d7e088e2c05bfffaf0b41d..2a923b575fa2e3393f6f667e2ce8adf38fc03afe 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
@@ -575,7 +575,7 @@ public class ServerPlayerGameMode { @@ -575,7 +575,7 @@ public class ServerPlayerGameMode {
@@ -13,7 +13,7 @@ index bb7ad618fad7f11a02d7e088e2c05bfffaf0b41d..b9041e46a4fafeac004cf8a0ef9d7daa
ItemStack itemstack1 = stack.copy(); ItemStack itemstack1 = stack.copy();
- if (!flag1) { - if (!flag1) {
+ if (!flag1 || (player.level.purpurConfig.composterBulkProcess && iblockdata.is(Blocks.COMPOSTER))) { // Purpur + if (!flag1 || (player.level().purpurConfig.composterBulkProcess && iblockdata.is(Blocks.COMPOSTER))) { // Purpur
enuminteractionresult = iblockdata.use(world, player, hand, hitResult); enuminteractionresult = iblockdata.use(world, player, hand, hitResult);
if (enuminteractionresult.consumesAction()) { if (enuminteractionresult.consumesAction()) {
@@ -90,7 +90,7 @@ index 87153b5576fed05103183a9860d804c2c8cfbe1c..e8ee608aa5e352d741694f50cdf77f06
int i = (Integer) state.getValue(ComposterBlock.LEVEL); int i = (Integer) state.getValue(ComposterBlock.LEVEL);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index dc2363808b6041ac1e60829e4e9a6a6c459a159b..4531d6d54eab78c87961641a0b023117e685aa5b 100644 index 339038dcf393653de973b55c090672b2f2f8fa26..167258202d385cce9567c0cc6c0d2ff9d5b226f5 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -485,6 +485,11 @@ public class PurpurWorldConfig { @@ -485,6 +485,11 @@ public class PurpurWorldConfig {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Add config for villager trading
diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java
index 831254902b21104a8d6376446853a141197278a5..d370ca8d0794c8b2f6fba5e4bc1c25d567e99511 100644 index 2936b4856c92dcbe6034f9ace2cb8b94887a4dd8..b71013a6dd5a713543c042199273ddae1feda4b9 100644
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
@@ -365,7 +365,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -365,7 +365,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
@@ -18,7 +18,7 @@ index 831254902b21104a8d6376446853a141197278a5..d370ca8d0794c8b2f6fba5e4bc1c25d5
} }
diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
index 36e99dc4c37d321608b0781c9c7787986d21307d..547795c81be710267c93d29c75a9b5e139d3eedc 100644 index e2a9179bb7a5ecbc31d98a2410a09f5e2107234b..8fd8778e918566504666213a102a7ee2d1ed8b14 100644
--- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
+++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
@@ -149,7 +149,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill @@ -149,7 +149,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill
@@ -31,38 +31,38 @@ index 36e99dc4c37d321608b0781c9c7787986d21307d..547795c81be710267c93d29c75a9b5e1
this.openTradingScreen(player, this.getDisplayName(), 1); this.openTradingScreen(player, this.getDisplayName(), 1);
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 9c35e7cadb723553bd21851d391b0297e5382b61..205ffb12c6ca4e614655b29fedcbc87155606880 100644 index 1625368c842497a0acd650dfaa0d284edc661548..6632e1e48483b512a7af0f1308116d852ac2a900 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1714,6 +1714,7 @@ public class PurpurWorldConfig { @@ -2117,6 +2117,7 @@ public class PurpurWorldConfig {
public int villagerBreedingTicks = 6000; public int villagerBreedingTicks = 6000;
public boolean villagerBypassMobGriefing = false; public boolean villagerBypassMobGriefing = false;
public boolean villagerTakeDamageFromWater = false; public boolean villagerTakeDamageFromWater = false;
+ public boolean villagerAllowTrading = true; + public boolean villagerAllowTrading = true;
private void villagerSettings() { private void villagerSettings() {
if (PurpurConfig.version < 10) { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
double oldValue = getDouble("mobs.villager.attributes.max-health", villagerMaxHealth); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
@@ -1727,6 +1728,7 @@ public class PurpurWorldConfig { @@ -2133,6 +2134,7 @@ public class PurpurWorldConfig {
villagerBreedingTicks = getInt("mobs.villager.breeding-delay-ticks", villagerBreedingTicks); villagerBreedingTicks = getInt("mobs.villager.breeding-delay-ticks", villagerBreedingTicks);
villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing);
villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater);
+ villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); + villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading);
} }
public double vindicatorMaxHealth = 24.0D; public boolean vindicatorRidable = false;
@@ -1747,6 +1749,7 @@ public class PurpurWorldConfig { @@ -2162,6 +2164,7 @@ public class PurpurWorldConfig {
public boolean wanderingTraderFollowEmeraldBlock = false; public boolean wanderingTraderFollowEmeraldBlock = false;
public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderCanBeLeashed = false;
public boolean wanderingTraderTakeDamageFromWater = false; public boolean wanderingTraderTakeDamageFromWater = false;
+ public boolean wanderingTraderAllowTrading = true; + public boolean wanderingTraderAllowTrading = true;
private void wanderingTraderSettings() { private void wanderingTraderSettings() {
if (PurpurConfig.version < 10) { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable);
double oldValue = getDouble("mobs.wandering_trader.attributes.max-health", wanderingTraderMaxHealth); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater);
@@ -1757,6 +1760,7 @@ public class PurpurWorldConfig { @@ -2175,6 +2178,7 @@ public class PurpurWorldConfig {
wanderingTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", wanderingTraderFollowEmeraldBlock); wanderingTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", wanderingTraderFollowEmeraldBlock);
wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed);
wanderingTraderTakeDamageFromWater = getBoolean("mobs.wandering_trader.takes-damage-from-water", wanderingTraderTakeDamageFromWater); wanderingTraderTakeDamageFromWater = getBoolean("mobs.wandering_trader.takes-damage-from-water", wanderingTraderTakeDamageFromWater);
+ wanderingTraderAllowTrading = getBoolean("mobs.wandering_trader.allow-trading", wanderingTraderAllowTrading); + wanderingTraderAllowTrading = getBoolean("mobs.wandering_trader.allow-trading", wanderingTraderAllowTrading);
} }
public double witchMaxHealth = 26.0D; public boolean wardenRidable = false;

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Drowning Settings
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 4a6c13e2f9835219161b3b83e0b3aecafb4eed73..cb062cfb6f4809fc580108503fe77e579ab954f5 100644 index 10dca8fdfea6c4c98bd36684598fab425cbd348a..a1aaef67d5f4ee42714638e324f7965f2ad27eb0 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java --- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -3241,7 +3241,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -3241,7 +3241,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -13,12 +13,12 @@ index 4a6c13e2f9835219161b3b83e0b3aecafb4eed73..cb062cfb6f4809fc580108503fe77e57
public int getMaxAirSupply() { public int getMaxAirSupply() {
- return this.maxAirTicks; // CraftBukkit - SPIGOT-6907: re-implement LivingEntity#setMaximumAir() - return this.maxAirTicks; // CraftBukkit - SPIGOT-6907: re-implement LivingEntity#setMaximumAir()
+ return this.level == null? this.maxAirTicks : this.level.purpurConfig.drowningAirTicks; // CraftBukkit - SPIGOT-6907: re-implement LivingEntity#setMaximumAir() // Purpur + return this.level == null? this.maxAirTicks : this.level().purpurConfig.drowningAirTicks; // CraftBukkit - SPIGOT-6907: re-implement LivingEntity#setMaximumAir() // Purpur
} }
public int getAirSupply() { public int getAirSupply() {
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index c7f53783c210f79a70577aa3d4f53b5410f26387..7e9c1dd6ccc6ce9dba8588b8fcd20a5f294cc52e 100644 index 234b92b189e921768ea83ef4f0c128266735cc6e..2f48ddb7d2731bd05d149d6286ae8292dfbec94b 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -441,7 +441,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -441,7 +441,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -26,7 +26,7 @@ index c7f53783c210f79a70577aa3d4f53b5410f26387..7e9c1dd6ccc6ce9dba8588b8fcd20a5f
if (flag1) { if (flag1) {
this.setAirSupply(this.decreaseAirSupply(this.getAirSupply())); this.setAirSupply(this.decreaseAirSupply(this.getAirSupply()));
- if (this.getAirSupply() == -20) { - if (this.getAirSupply() == -20) {
+ if (this.getAirSupply() == -this.level.purpurConfig.drowningDamageInterval) { // Purpur + if (this.getAirSupply() == -this.level().purpurConfig.drowningDamageInterval) { // Purpur
this.setAirSupply(0); this.setAirSupply(0);
Vec3 vec3d = this.getDeltaMovement(); Vec3 vec3d = this.getDeltaMovement();
@@ -35,12 +35,12 @@ index c7f53783c210f79a70577aa3d4f53b5410f26387..7e9c1dd6ccc6ce9dba8588b8fcd20a5f
} }
- this.hurt(this.damageSources().drown(), 2.0F); - this.hurt(this.damageSources().drown(), 2.0F);
+ this.hurt(this.damageSources().drown(), (float) this.level.purpurConfig.damageFromDrowning); // Purpur + this.hurt(this.damageSources().drown(), (float) this.level().purpurConfig.damageFromDrowning); // Purpur
} }
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 205ffb12c6ca4e614655b29fedcbc87155606880..bc0ce5ee17cc575c4bfb4e74227dd07fc8540366 100644 index 6632e1e48483b512a7af0f1308116d852ac2a900..60841d2da5b3ad0912fb7931d238afa4a574dfc3 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -166,6 +166,15 @@ public class PurpurWorldConfig { @@ -166,6 +166,15 @@ public class PurpurWorldConfig {

View File

@@ -5,14 +5,14 @@ Subject: [PATCH] Break individual slabs when sneaking
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
index b9041e46a4fafeac004cf8a0ef9d7daaa9bfb0ff..7501e5773acdacca36ba72d71118c264f85d423c 100644 index 2a923b575fa2e3393f6f667e2ce8adf38fc03afe..2a18d9b7ab5d28458e53ccad29edc6f9c2c3099c 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
@@ -396,6 +396,7 @@ public class ServerPlayerGameMode { @@ -396,6 +396,7 @@ public class ServerPlayerGameMode {
} else {capturedBlockEntity = true;} // Paper end } else {capturedBlockEntity = true;} // Paper end
return false; return false;
} }
+ if (this.player.level.purpurConfig.slabHalfBreak && this.player.isShiftKeyDown() && iblockdata.getBlock() instanceof net.minecraft.world.level.block.SlabBlock && ((net.minecraft.world.level.block.SlabBlock) iblockdata.getBlock()).halfBreak(iblockdata, pos, this.player)) return true; // Purpur + if (this.player.level().purpurConfig.slabHalfBreak && this.player.isShiftKeyDown() && iblockdata.getBlock() instanceof net.minecraft.world.level.block.SlabBlock && ((net.minecraft.world.level.block.SlabBlock) iblockdata.getBlock()).halfBreak(iblockdata, pos, this.player)) return true; // Purpur
} }
// CraftBukkit end // CraftBukkit end
@@ -47,7 +47,7 @@ index 18b603d646081926343dea108b55d641df1c2c34..03ad3e45fc6d48091ac0c0ba5dc3d014
+ // Purpur end + // Purpur end
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index bc0ce5ee17cc575c4bfb4e74227dd07fc8540366..25d224c38469e82957e924125153d8dc4fef1db3 100644 index 60841d2da5b3ad0912fb7931d238afa4a574dfc3..ddfa196494b8e4d61dcaf064cc1fd97127638dc7 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -606,6 +606,11 @@ public class PurpurWorldConfig { @@ -606,6 +606,11 @@ public class PurpurWorldConfig {

View File

@@ -36,7 +36,7 @@ index 42ae4d293a420f0b8eb476df6389b2e7a693895f..fa1a2483c24d95ca03c269cde68c335e
} else { } else {
DoorBlock blockdoor = (DoorBlock) iblockdata.getBlock(); DoorBlock blockdoor = (DoorBlock) iblockdata.getBlock();
diff --git a/src/main/java/net/minecraft/world/level/block/DoorBlock.java b/src/main/java/net/minecraft/world/level/block/DoorBlock.java diff --git a/src/main/java/net/minecraft/world/level/block/DoorBlock.java b/src/main/java/net/minecraft/world/level/block/DoorBlock.java
index c028a7158e41a0754abb8e24dcd647633fbf3fe8..cd65d32f4af016d4937e598c71386a3072f4c490 100644 index c028a7158e41a0754abb8e24dcd647633fbf3fe8..bfd90aa35dce7f8843f7331907a446332db5fade 100644
--- a/src/main/java/net/minecraft/world/level/block/DoorBlock.java --- a/src/main/java/net/minecraft/world/level/block/DoorBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/DoorBlock.java +++ b/src/main/java/net/minecraft/world/level/block/DoorBlock.java
@@ -167,6 +167,7 @@ public class DoorBlock extends Block { @@ -167,6 +167,7 @@ public class DoorBlock extends Block {
@@ -54,7 +54,7 @@ index c028a7158e41a0754abb8e24dcd647633fbf3fe8..cd65d32f4af016d4937e598c71386a30
+ +
+ // Purpur start + // Purpur start
+ public static boolean requiresRedstone(Level level, BlockState state, BlockPos pos) { + public static boolean requiresRedstone(Level level, BlockState state, BlockPos pos) {
+ if (level.purpurConfig.doorRequiresRedstone.contains(state.getBlock())) { + if (level().purpurConfig.doorRequiresRedstone.contains(state.getBlock())) {
+ // force update client + // force update client
+ BlockPos otherPos = pos.relative(state.getValue(DoorBlock.HALF) == DoubleBlockHalf.LOWER ? Direction.UP : Direction.DOWN); + BlockPos otherPos = pos.relative(state.getValue(DoorBlock.HALF) == DoubleBlockHalf.LOWER ? Direction.UP : Direction.DOWN);
+ BlockState otherState = level.getBlockState(otherPos); + BlockState otherState = level.getBlockState(otherPos);
@@ -67,7 +67,7 @@ index c028a7158e41a0754abb8e24dcd647633fbf3fe8..cd65d32f4af016d4937e598c71386a30
+ // Purpur end + // Purpur end
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 7fd0f37cfb1abf85adf84f5b7f1ed0769eb49208..65f6616737e8936e71160b71d410b1a177be1405 100644 index e3ee434dcca8edafcca3c8f9a28349dccad23617..c0485f0fc5ec96ff709d95c0b5981e6d7e8d6c6f 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -510,6 +510,16 @@ public class PurpurWorldConfig { @@ -510,6 +510,16 @@ public class PurpurWorldConfig {

View File

@@ -31,22 +31,22 @@ index 2c085c4a154cb0f8a1d38453f43474a764398784..589b437e7c97c846410f293e2f014bdc
pos = pos.below(); pos = pos.below();
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 7206fa9f4fff69068015f2b4801f33836a48e035..6e401b55e16cebf56156bf88ecd8d97045721efd 100644 index 75cea7300dee21af13cf448f75361b69ae9d5517..7833464a3c8e4ec96abf5da8728024b3677a2d38 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1376,6 +1376,7 @@ public class PurpurWorldConfig { @@ -1636,6 +1636,7 @@ public class PurpurWorldConfig {
public double piglinMaxHealth = 16.0D; public double piglinMaxHealth = 16.0D;
public boolean piglinBypassMobGriefing = false; public boolean piglinBypassMobGriefing = false;
public boolean piglinTakeDamageFromWater = false; public boolean piglinTakeDamageFromWater = false;
+ public int piglinPortalSpawnModifier = 2000; + public int piglinPortalSpawnModifier = 2000;
private void piglinSettings() { private void piglinSettings() {
if (PurpurConfig.version < 10) { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable);
double oldValue = getDouble("mobs.piglin.attributes.max-health", piglinMaxHealth); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater);
@@ -1385,6 +1386,7 @@ public class PurpurWorldConfig { @@ -1648,6 +1649,7 @@ public class PurpurWorldConfig {
piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth); piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth);
piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing);
piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater); piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater);
+ piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier); + piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier);
} }
public double piglinBruteMaxHealth = 50.0D; public boolean piglinBruteRidable = false;

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Config for wither explosion radius
diff --git a/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java b/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java diff --git a/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java b/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java
index 80b86d5dd68c3d288a1a61ea8aa1cba9d899aa1c..f92e7624f774f883fac7bb51c2e46fdc7c16aea6 100644 index 80b86d5dd68c3d288a1a61ea8aa1cba9d899aa1c..7847915fb90e45e44ba514957193fa7b747e0c76 100644
--- a/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java --- a/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java
+++ b/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java +++ b/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java
@@ -95,7 +95,7 @@ public class WitherSkull extends AbstractHurtingProjectile { @@ -95,7 +95,7 @@ public class WitherSkull extends AbstractHurtingProjectile {
@@ -13,27 +13,27 @@ index 80b86d5dd68c3d288a1a61ea8aa1cba9d899aa1c..f92e7624f774f883fac7bb51c2e46fdc
// CraftBukkit start // CraftBukkit start
// this.level().explode(this, this.getX(), this.getY(), this.getZ(), 1.0F, false, World.a.MOB); // this.level().explode(this, this.getX(), this.getY(), this.getZ(), 1.0F, false, World.a.MOB);
- ExplosionPrimeEvent event = new ExplosionPrimeEvent(this.getBukkitEntity(), 1.0F, false); - ExplosionPrimeEvent event = new ExplosionPrimeEvent(this.getBukkitEntity(), 1.0F, false);
+ ExplosionPrimeEvent event = new ExplosionPrimeEvent(this.getBukkitEntity(), this.level.purpurConfig.witherExplosionRadius, false); // Purpur + ExplosionPrimeEvent event = new ExplosionPrimeEvent(this.getBukkitEntity(), this.level().purpurConfig.witherExplosionRadius, false); // Purpur
this.level().getCraftServer().getPluginManager().callEvent(event); this.level().getCraftServer().getPluginManager().callEvent(event);
if (!event.isCancelled()) { if (!event.isCancelled()) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 6e401b55e16cebf56156bf88ecd8d97045721efd..e178d0a4ac56d861198d38e3c3c70eef7828c404 100644 index 7833464a3c8e4ec96abf5da8728024b3677a2d38..dbfe6549a0fcc6acd7b1ffb6385dc228b834ab8b 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1838,6 +1838,7 @@ public class PurpurWorldConfig { @@ -2275,6 +2275,7 @@ public class PurpurWorldConfig {
public boolean witherBypassMobGriefing = false; public boolean witherBypassMobGriefing = false;
public boolean witherTakeDamageFromWater = false; public boolean witherTakeDamageFromWater = false;
public boolean witherCanRideVehicles = false; public boolean witherCanRideVehicles = false;
+ public float witherExplosionRadius = 1.0F; + public float witherExplosionRadius = 1.0F;
private void witherSettings() { private void witherSettings() {
if (PurpurConfig.version < 8) { witherRidable = getBoolean("mobs.wither.ridable", witherRidable);
double oldValue = getDouble("mobs.wither.max-health", witherMaxHealth); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater);
@@ -1854,6 +1855,7 @@ public class PurpurWorldConfig { @@ -2295,6 +2296,7 @@ public class PurpurWorldConfig {
witherBypassMobGriefing = getBoolean("mobs.wither.bypass-mob-griefing", witherBypassMobGriefing); witherBypassMobGriefing = getBoolean("mobs.wither.bypass-mob-griefing", witherBypassMobGriefing);
witherTakeDamageFromWater = getBoolean("mobs.wither.takes-damage-from-water", witherTakeDamageFromWater); witherTakeDamageFromWater = getBoolean("mobs.wither.takes-damage-from-water", witherTakeDamageFromWater);
witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles); witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles);
+ witherExplosionRadius = (float) getDouble("mobs.wither.explosion-radius", witherExplosionRadius); + witherExplosionRadius = (float) getDouble("mobs.wither.explosion-radius", witherExplosionRadius);
} }
public double witherSkeletonMaxHealth = 20.0D; public boolean witherSkeletonRidable = false;

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Config for changing the blocks that turn into dirt paths
diff --git a/src/main/java/net/minecraft/world/item/ShovelItem.java b/src/main/java/net/minecraft/world/item/ShovelItem.java diff --git a/src/main/java/net/minecraft/world/item/ShovelItem.java b/src/main/java/net/minecraft/world/item/ShovelItem.java
index c7195f2e12bbd6545f7bffcc2b4ba5cc3d48df20..5e730bc9c8ff94b16ac2bf8567dda8aea2ee4b2a 100644 index c7195f2e12bbd6545f7bffcc2b4ba5cc3d48df20..0f4ad7d12b2a3beb7f013c64da3ab4f0ef2c535e 100644
--- a/src/main/java/net/minecraft/world/item/ShovelItem.java --- a/src/main/java/net/minecraft/world/item/ShovelItem.java
+++ b/src/main/java/net/minecraft/world/item/ShovelItem.java +++ b/src/main/java/net/minecraft/world/item/ShovelItem.java
@@ -34,7 +34,7 @@ public class ShovelItem extends DiggerItem { @@ -34,7 +34,7 @@ public class ShovelItem extends DiggerItem {
@@ -13,12 +13,12 @@ index c7195f2e12bbd6545f7bffcc2b4ba5cc3d48df20..5e730bc9c8ff94b16ac2bf8567dda8ae
} else { } else {
Player player = context.getPlayer(); Player player = context.getPlayer();
- BlockState blockState2 = FLATTENABLES.get(blockState.getBlock()); - BlockState blockState2 = FLATTENABLES.get(blockState.getBlock());
+ BlockState blockState2 = level.purpurConfig.shovelTurnsBlockToGrassPath.contains(blockState.getBlock()) ? Blocks.DIRT_PATH.defaultBlockState() : null; // Purpur + BlockState blockState2 = level().purpurConfig.shovelTurnsBlockToGrassPath.contains(blockState.getBlock()) ? Blocks.DIRT_PATH.defaultBlockState() : null; // Purpur
BlockState blockState3 = null; BlockState blockState3 = null;
Runnable afterAction = null; // Paper Runnable afterAction = null; // Paper
if (blockState2 != null && level.getBlockState(blockPos.above()).isAir()) { if (blockState2 != null && level.getBlockState(blockPos.above()).isAir()) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index e178d0a4ac56d861198d38e3c3c70eef7828c404..1bd6ddb4cd5b77074a6f9fd5d4024db1c8567703 100644 index dbfe6549a0fcc6acd7b1ffb6385dc228b834ab8b..4d8696198ad30f283e91bec76d392d6a825aaeb0 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -450,6 +450,21 @@ public class PurpurWorldConfig { @@ -450,6 +450,21 @@ public class PurpurWorldConfig {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Configurable piston push limit
diff --git a/src/main/java/net/minecraft/world/level/block/piston/PistonStructureResolver.java b/src/main/java/net/minecraft/world/level/block/piston/PistonStructureResolver.java diff --git a/src/main/java/net/minecraft/world/level/block/piston/PistonStructureResolver.java b/src/main/java/net/minecraft/world/level/block/piston/PistonStructureResolver.java
index 744d91546d1a810f60a43c15ed74b4158f341a4a..354538daefa603f6df5a139b6bff87dbb4cef178 100644 index 744d91546d1a810f60a43c15ed74b4158f341a4a..943bb156bfc215fee1e2a4a65c88ff37208f9044 100644
--- a/src/main/java/net/minecraft/world/level/block/piston/PistonStructureResolver.java --- a/src/main/java/net/minecraft/world/level/block/piston/PistonStructureResolver.java
+++ b/src/main/java/net/minecraft/world/level/block/piston/PistonStructureResolver.java +++ b/src/main/java/net/minecraft/world/level/block/piston/PistonStructureResolver.java
@@ -86,7 +86,7 @@ public class PistonStructureResolver { @@ -86,7 +86,7 @@ public class PistonStructureResolver {
@@ -13,7 +13,7 @@ index 744d91546d1a810f60a43c15ed74b4158f341a4a..354538daefa603f6df5a139b6bff87db
} else { } else {
int i = 1; int i = 1;
- if (i + this.toPush.size() > 12) { - if (i + this.toPush.size() > 12) {
+ if (i + this.toPush.size() > this.level.purpurConfig.pistonBlockPushLimit) { // Purpur + if (i + this.toPush.size() > this.level().purpurConfig.pistonBlockPushLimit) { // Purpur
return false; return false;
} else { } else {
while(isSticky(blockState)) { while(isSticky(blockState)) {
@@ -22,7 +22,7 @@ index 744d91546d1a810f60a43c15ed74b4158f341a4a..354538daefa603f6df5a139b6bff87db
++i; ++i;
- if (i + this.toPush.size() > 12) { - if (i + this.toPush.size() > 12) {
+ if (i + this.toPush.size() > this.level.purpurConfig.pistonBlockPushLimit) { // Purpur + if (i + this.toPush.size() > this.level().purpurConfig.pistonBlockPushLimit) { // Purpur
return false; return false;
} }
} }
@@ -31,12 +31,12 @@ index 744d91546d1a810f60a43c15ed74b4158f341a4a..354538daefa603f6df5a139b6bff87db
} }
- if (this.toPush.size() >= 12) { - if (this.toPush.size() >= 12) {
+ if (this.toPush.size() >= this.level.purpurConfig.pistonBlockPushLimit) { // Purpur + if (this.toPush.size() >= this.level().purpurConfig.pistonBlockPushLimit) { // Purpur
return false; return false;
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 1bd6ddb4cd5b77074a6f9fd5d4024db1c8567703..e19e409b7e69023579db992f2b13359b18fd3dcc 100644 index 4d8696198ad30f283e91bec76d392d6a825aaeb0..a8f5a3c7a756cb74cf065f1797b4a1e47b595236 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -631,6 +631,11 @@ public class PurpurWorldConfig { @@ -631,6 +631,11 @@ public class PurpurWorldConfig {

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] Configurable mob blindness
Ported from https://github.com/raltsmc/mobblindness Ported from https://github.com/raltsmc/mobblindness
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index 7e9c1dd6ccc6ce9dba8588b8fcd20a5f294cc52e..cb8f198801f74a6cd3cc0ae676005d72badff446 100644 index 2f48ddb7d2731bd05d149d6286ae8292dfbec94b..9cf87d4009e8d71d844cf1583a1457b45a523fff 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -1038,6 +1038,17 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -1038,6 +1038,17 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -19,7 +19,7 @@ index 7e9c1dd6ccc6ce9dba8588b8fcd20a5f294cc52e..cb8f198801f74a6cd3cc0ae676005d72
+ if (entityliving.hasEffect(MobEffects.BLINDNESS)) { + if (entityliving.hasEffect(MobEffects.BLINDNESS)) {
+ int amplifier = entityliving.getEffect(MobEffects.BLINDNESS).getAmplifier(); + int amplifier = entityliving.getEffect(MobEffects.BLINDNESS).getAmplifier();
+ for (int i = 0; i < amplifier; i++) { + for (int i = 0; i < amplifier; i++) {
+ d0 *= this.level.purpurConfig.mobsBlindnessMultiplier; + d0 *= this.level().purpurConfig.mobsBlindnessMultiplier;
+ } + }
+ } + }
+ } + }
@@ -28,7 +28,7 @@ index 7e9c1dd6ccc6ce9dba8588b8fcd20a5f294cc52e..cb8f198801f74a6cd3cc0ae676005d72
return d0; return d0;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index e19e409b7e69023579db992f2b13359b18fd3dcc..89652648990c50fc4f25318026ee1da925e7364f 100644 index a8f5a3c7a756cb74cf065f1797b4a1e47b595236..1d30ead160227a6b6b0459c92aaf2134317f5538 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -134,6 +134,7 @@ public class PurpurWorldConfig { @@ -134,6 +134,7 @@ public class PurpurWorldConfig {

View File

@@ -5,14 +5,14 @@ Subject: [PATCH] Config for health to impact Creeper explosion radius
diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java
index 13a1ede4fc72ef2811250ac4991ecd2bc10dbe95..a2c21c9c3ec6883661c63359e3c63ea090fcc07f 100644 index 56aaf99a94944de42f437e18806381e3978c305a..e2fba88438835f63605b81eeeff5345b4bcc071a 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java
@@ -370,9 +370,10 @@ public class Creeper extends Monster implements PowerableMob { @@ -370,9 +370,10 @@ public class Creeper extends Monster implements PowerableMob {
this.exploding = true; // Purpur this.exploding = true; // Purpur
if (!this.level().isClientSide) { if (!this.level().isClientSide) {
float f = this.isPowered() ? 2.0F : 1.0F; float f = this.isPowered() ? 2.0F : 1.0F;
+ float multiplier = this.level.purpurConfig.creeperHealthRadius ? this.getHealth() / this.getMaxHealth() : 1; // Purpur + float multiplier = this.level().purpurConfig.creeperHealthRadius ? this.getHealth() / this.getMaxHealth() : 1; // Purpur
// CraftBukkit start // CraftBukkit start
- ExplosionPrimeEvent event = new ExplosionPrimeEvent(this.getBukkitEntity(), this.explosionRadius * f, false); - ExplosionPrimeEvent event = new ExplosionPrimeEvent(this.getBukkitEntity(), this.explosionRadius * f, false);
@@ -21,22 +21,22 @@ index 13a1ede4fc72ef2811250ac4991ecd2bc10dbe95..a2c21c9c3ec6883661c63359e3c63ea0
if (!event.isCancelled()) { if (!event.isCancelled()) {
this.dead = true; this.dead = true;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 89652648990c50fc4f25318026ee1da925e7364f..582fffb4caca2cd260fd24dab2ea7529eb2b74c3 100644 index 1d30ead160227a6b6b0459c92aaf2134317f5538..a2cceab5518a48d87a6bbeb5bc9b87c96611c336 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -856,6 +856,7 @@ public class PurpurWorldConfig { @@ -918,6 +918,7 @@ public class PurpurWorldConfig {
public boolean creeperBypassMobGriefing = false; public boolean creeperBypassMobGriefing = false;
public boolean creeperTakeDamageFromWater = false; public boolean creeperTakeDamageFromWater = false;
public boolean creeperExplodeWhenKilled = false; public boolean creeperExplodeWhenKilled = false;
+ public boolean creeperHealthRadius = false; + public boolean creeperHealthRadius = false;
private void creeperSettings() { private void creeperSettings() {
if (PurpurConfig.version < 10) { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable);
double oldValue = getDouble("mobs.creeper.attributes.max-health", creeperMaxHealth); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater);
@@ -868,6 +869,7 @@ public class PurpurWorldConfig { @@ -933,6 +934,7 @@ public class PurpurWorldConfig {
creeperBypassMobGriefing = getBoolean("mobs.creeper.bypass-mob-griefing", creeperBypassMobGriefing); creeperBypassMobGriefing = getBoolean("mobs.creeper.bypass-mob-griefing", creeperBypassMobGriefing);
creeperTakeDamageFromWater = getBoolean("mobs.creeper.takes-damage-from-water", creeperTakeDamageFromWater); creeperTakeDamageFromWater = getBoolean("mobs.creeper.takes-damage-from-water", creeperTakeDamageFromWater);
creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled); creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled);
+ creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius); + creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius);
} }
public double dolphinMaxHealth = 10.0D; public boolean dolphinRidable = false;

View File

@@ -5,13 +5,13 @@ Subject: [PATCH] Iron golem calm anger options
diff --git a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java diff --git a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java
index b89f01408c9ebaeeee93f1924010be6db89f1c66..39dfe26b37fc980080e7e0e7bdc82a94f00b0c33 100644 index 58539d29b8e2a8c0676cc574f64e7d61613e1451..1ffb8e1c386fc85796432281ac407a935169b186 100644
--- a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java --- a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java
+++ b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java
@@ -96,6 +96,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob { @@ -96,6 +96,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob {
@Override @Override
protected void registerGoals() { protected void registerGoals() {
if (level.purpurConfig.ironGolemCanSwim) this.goalSelector.addGoal(0, new net.minecraft.world.entity.ai.goal.FloatGoal(this)); // Purpur if (level().purpurConfig.ironGolemCanSwim) this.goalSelector.addGoal(0, new net.minecraft.world.entity.ai.goal.FloatGoal(this)); // Purpur
+ if (this.level().purpurConfig.ironGolemPoppyCalm) this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.ReceiveFlower(this)); // Purpur + if (this.level().purpurConfig.ironGolemPoppyCalm) this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.ReceiveFlower(this)); // Purpur
this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur
this.goalSelector.addGoal(1, new MeleeAttackGoal(this, 1.0D, true)); this.goalSelector.addGoal(1, new MeleeAttackGoal(this, 1.0D, true));
@@ -25,19 +25,19 @@ index b89f01408c9ebaeeee93f1924010be6db89f1c66..39dfe26b37fc980080e7e0e7bdc82a94
} }
} }
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 582fffb4caca2cd260fd24dab2ea7529eb2b74c3..693f8bea8ec84e357734bc495dbea13dca62fc12 100644 index a2cceab5518a48d87a6bbeb5bc9b87c96611c336..14a1150bb860af3e99ab67f5bbb44c791c80f0df 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1197,6 +1197,8 @@ public class PurpurWorldConfig { @@ -1393,6 +1393,8 @@ public class PurpurWorldConfig {
public boolean ironGolemCanSwim = false;
public double ironGolemMaxHealth = 100.0D; public double ironGolemMaxHealth = 100.0D;
public boolean ironGolemTakeDamageFromWater = false; public boolean ironGolemTakeDamageFromWater = false;
+ public boolean ironGolemPoppyCalm = false; + public boolean ironGolemPoppyCalm = false;
+ public boolean ironGolemHealCalm = false; + public boolean ironGolemHealCalm = false;
private void ironGolemSettings() { private void ironGolemSettings() {
if (PurpurConfig.version < 10) { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable);
double oldValue = getDouble("mobs.iron_golem.attributes.max-health", ironGolemMaxHealth); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater);
@@ -1205,6 +1207,8 @@ public class PurpurWorldConfig { @@ -1405,6 +1407,8 @@ public class PurpurWorldConfig {
} }
ironGolemMaxHealth = getDouble("mobs.iron_golem.attributes.max_health", ironGolemMaxHealth); ironGolemMaxHealth = getDouble("mobs.iron_golem.attributes.max_health", ironGolemMaxHealth);
ironGolemTakeDamageFromWater = getBoolean("mobs.iron_golem.takes-damage-from-water", ironGolemTakeDamageFromWater); ironGolemTakeDamageFromWater = getBoolean("mobs.iron_golem.takes-damage-from-water", ironGolemTakeDamageFromWater);

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Breedable parrots
diff --git a/src/main/java/net/minecraft/world/entity/animal/Parrot.java b/src/main/java/net/minecraft/world/entity/animal/Parrot.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Parrot.java b/src/main/java/net/minecraft/world/entity/animal/Parrot.java
index 4bbf7b2afa98ed0dae079596cd99606bb20d63fa..44f3269e0b17b3932b6a184e3f8512bc416f6376 100644 index 08935a1f2c4a3f43483719686e5baab5063cdfce..bfae3b94ab035e1c27c988cfcc3b449c7266efd3 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java
@@ -226,6 +226,7 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder<Parrot @@ -226,6 +226,7 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder<Parrot
@@ -50,22 +50,22 @@ index 4bbf7b2afa98ed0dae079596cd99606bb20d63fa..44f3269e0b17b3932b6a184e3f8512bc
@Override @Override
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 693f8bea8ec84e357734bc495dbea13dca62fc12..7a5b28a470b2c93444963d68234d5fef86acc9cf 100644 index 14a1150bb860af3e99ab67f5bbb44c791c80f0df..eafba18eb4b52a571af814e82aee09710146ba88 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1333,6 +1333,7 @@ public class PurpurWorldConfig { @@ -1566,6 +1566,7 @@ public class PurpurWorldConfig {
public double parrotMaxY = 320D;
public double parrotMaxHealth = 6.0D; public double parrotMaxHealth = 6.0D;
public boolean parrotTakeDamageFromWater = false; public boolean parrotTakeDamageFromWater = false;
+ public boolean parrotBreedable = false; + public boolean parrotBreedable = false;
private void parrotSettings() { private void parrotSettings() {
if (PurpurConfig.version < 10) { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable);
double oldValue = getDouble("mobs.parrot.attributes.max-health", parrotMaxHealth); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater);
@@ -1341,6 +1342,7 @@ public class PurpurWorldConfig { @@ -1578,6 +1579,7 @@ public class PurpurWorldConfig {
} }
parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth); parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth);
parrotTakeDamageFromWater = getBoolean("mobs.parrot.takes-damage-from-water", parrotTakeDamageFromWater); parrotTakeDamageFromWater = getBoolean("mobs.parrot.takes-damage-from-water", parrotTakeDamageFromWater);
+ parrotBreedable = getBoolean("mobs.parrot.can-breed", parrotBreedable); + parrotBreedable = getBoolean("mobs.parrot.can-breed", parrotBreedable);
} }
public String phantomMaxHealth = "20.0"; public boolean phantomRidable = false;

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Configurable powered rail boost modifier
diff --git a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java diff --git a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java
index 5cdcc5792f19766d2d55d16859f8e0f68bd6479b..39dac396afb4573adc098d9121fa0622642a5bf6 100644 index 5cdcc5792f19766d2d55d16859f8e0f68bd6479b..b99b94c6ec4767aba16d82eaca8b2761d779b226 100644
--- a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java --- a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java
+++ b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java +++ b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java
@@ -724,7 +724,7 @@ public abstract class AbstractMinecart extends Entity { @@ -724,7 +724,7 @@ public abstract class AbstractMinecart extends Entity {
@@ -13,12 +13,12 @@ index 5cdcc5792f19766d2d55d16859f8e0f68bd6479b..39dac396afb4573adc098d9121fa0622
double d20 = 0.06D; double d20 = 0.06D;
- this.setDeltaMovement(vec3d4.add(vec3d4.x / d18 * 0.06D, 0.0D, vec3d4.z / d18 * 0.06D)); - this.setDeltaMovement(vec3d4.add(vec3d4.x / d18 * 0.06D, 0.0D, vec3d4.z / d18 * 0.06D));
+ this.setDeltaMovement(vec3d4.add(vec3d4.x / d18 * this.level.purpurConfig.poweredRailBoostModifier, 0.0D, vec3d4.z / d18 * this.level.purpurConfig.poweredRailBoostModifier)); // Purpur + this.setDeltaMovement(vec3d4.add(vec3d4.x / d18 * this.level().purpurConfig.poweredRailBoostModifier, 0.0D, vec3d4.z / d18 * this.level().purpurConfig.poweredRailBoostModifier)); // Purpur
} else { } else {
Vec3 vec3d5 = this.getDeltaMovement(); Vec3 vec3d5 = this.getDeltaMovement();
double d21 = vec3d5.x; double d21 = vec3d5.x;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 7a5b28a470b2c93444963d68234d5fef86acc9cf..682c0f64c22f65fd900c3f9b114d67a1ce5e43b2 100644 index eafba18eb4b52a571af814e82aee09710146ba88..f59b3a99e460859f1744e9360a4a7dd31e1aeec5 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -277,6 +277,7 @@ public class PurpurWorldConfig { @@ -277,6 +277,7 @@ public class PurpurWorldConfig {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Add config change multiplier critical damage value
diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java
index 2f6856a29cb8dd7c84e3bf4bb4af6293fba0760e..6ffd1b70722f34cb06f472f2340597c4778a5bb8 100644 index ca16f896ede5cfb957849ef3ad1f90f6518659dc..bb1cda93ae9e754acf20193100ce0de56bf47843 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java --- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java
@@ -1313,7 +1313,7 @@ public abstract class Player extends LivingEntity { @@ -1313,7 +1313,7 @@ public abstract class Player extends LivingEntity {
@@ -13,12 +13,12 @@ index 2f6856a29cb8dd7c84e3bf4bb4af6293fba0760e..6ffd1b70722f34cb06f472f2340597c4
flag2 = flag2 && !this.isSprinting(); flag2 = flag2 && !this.isSprinting();
if (flag2) { if (flag2) {
- f *= 1.5F; - f *= 1.5F;
+ f *= this.level.purpurConfig.playerCriticalDamageMultiplier; // Purpur + f *= this.level().purpurConfig.playerCriticalDamageMultiplier; // Purpur
} }
f += f1; f += f1;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 682c0f64c22f65fd900c3f9b114d67a1ce5e43b2..b03653f7de9eb7c48ca998d51cd4982332f2c741 100644 index f59b3a99e460859f1744e9360a4a7dd31e1aeec5..756517c6257bfb037b325fe6d53354a28156162b 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -376,6 +376,7 @@ public class PurpurWorldConfig { @@ -376,6 +376,7 @@ public class PurpurWorldConfig {

View File

@@ -9,7 +9,7 @@ creating an itemstack using the TileEntity's NBT data (how it handles it for
creative players) instead of routing it through the LootableBuilder. creative players) instead of routing it through the LootableBuilder.
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
index 7501e5773acdacca36ba72d71118c264f85d423c..1249a776b4b2d97fc51aecddeda8151fa0646dc1 100644 index 2a18d9b7ab5d28458e53ccad29edc6f9c2c3099c..76a025d74c577ca2a55659c1426d40a746b034dd 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
@@ -427,7 +427,7 @@ public class ServerPlayerGameMode { @@ -427,7 +427,7 @@ public class ServerPlayerGameMode {
@@ -17,7 +17,7 @@ index 7501e5773acdacca36ba72d71118c264f85d423c..1249a776b4b2d97fc51aecddeda8151f
ItemStack mainHandStack = null; // Paper ItemStack mainHandStack = null; // Paper
boolean isCorrectTool = false; // Paper boolean isCorrectTool = false; // Paper
- if (this.isCreative()) { - if (this.isCreative()) {
+ if (this.isCreative() || (this.level.purpurConfig.shulkerBoxAllowOversizedStacks && block instanceof net.minecraft.world.level.block.ShulkerBoxBlock)) { // Purpur + if (this.isCreative() || (this.level().purpurConfig.shulkerBoxAllowOversizedStacks && block instanceof net.minecraft.world.level.block.ShulkerBoxBlock)) { // Purpur
// return true; // CraftBukkit // return true; // CraftBukkit
} else { } else {
ItemStack itemstack = this.player.getMainHandItem(); ItemStack itemstack = this.player.getMainHandItem();
@@ -35,7 +35,7 @@ index b51155ad12515b2d0dd0f202580b9f455c114d9a..dd6c82a418ee299d7a5614cb0260949c
blockEntity.saveToItem(itemStack); blockEntity.saveToItem(itemStack);
if (shulkerBoxBlockEntity.hasCustomName()) { if (shulkerBoxBlockEntity.hasCustomName()) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 98a9088368f25eb7541a523b47a4c5cb033b0f53..dde17ce7e4baed528fce1c816fef917c08ff6a09 100644 index a0e58a27c70ec7e65a3fef917b0ba4a894252ef8..38f619bb9570fae9a2ded41db262a1e087c6f615 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -688,6 +688,11 @@ public class PurpurWorldConfig { @@ -688,6 +688,11 @@ public class PurpurWorldConfig {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Bee can work when raining or at night
diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java
index f68dd3af977190e310d6854ba251b0f12f914c70..2ce665cb02520803bf55362d1703f416ea9078fa 100644 index 33f9b39d770262dd56ef17b0ec59c3175be32ff6..318e51509338a7cf22dfeb1a923638d8df2b5c2f 100644
--- a/src/main/java/net/minecraft/world/entity/animal/Bee.java --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java
@@ -394,7 +394,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { @@ -394,7 +394,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
@@ -31,19 +31,19 @@ index a16a1df28258d605cf5908dbe19bda5d71ad4f45..7b82842b97ce795745cf6ee6399f618c
return false; return false;
} else { } else {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index dde17ce7e4baed528fce1c816fef917c08ff6a09..6bf8059ab05652d604103f8421c35b79b1dcfcb6 100644 index 38f619bb9570fae9a2ded41db262a1e087c6f615..fdd0a35b722a9056840edbac3bcb391bc062e499 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -742,6 +742,8 @@ public class PurpurWorldConfig { @@ -778,6 +778,8 @@ public class PurpurWorldConfig {
public double beeMaxHealth = 10.0D; public double beeMaxHealth = 10.0D;
public int beeBreedingTicks = 6000; public int beeBreedingTicks = 6000;
public boolean beeTakeDamageFromWater = false; public boolean beeTakeDamageFromWater = false;
+ public boolean beeCanWorkAtNight = false; + public boolean beeCanWorkAtNight = false;
+ public boolean beeCanWorkInRain = false; + public boolean beeCanWorkInRain = false;
private void beeSettings() { private void beeSettings() {
if (PurpurConfig.version < 10) { beeRidable = getBoolean("mobs.bee.ridable", beeRidable);
double oldValue = getDouble("mobs.bee.attributes.max-health", beeMaxHealth); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater);
@@ -751,6 +753,8 @@ public class PurpurWorldConfig { @@ -791,6 +793,8 @@ public class PurpurWorldConfig {
beeMaxHealth = getDouble("mobs.bee.attributes.max_health", beeMaxHealth); beeMaxHealth = getDouble("mobs.bee.attributes.max_health", beeMaxHealth);
beeBreedingTicks = getInt("mobs.bee.breeding-delay-ticks", beeBreedingTicks); beeBreedingTicks = getInt("mobs.bee.breeding-delay-ticks", beeBreedingTicks);
beeTakeDamageFromWater = getBoolean("mobs.bee.takes-damage-from-water", beeTakeDamageFromWater); beeTakeDamageFromWater = getBoolean("mobs.bee.takes-damage-from-water", beeTakeDamageFromWater);
@@ -51,4 +51,4 @@ index dde17ce7e4baed528fce1c816fef917c08ff6a09..6bf8059ab05652d604103f8421c35b79
+ beeCanWorkInRain = getBoolean("mobs.bee.can-work-in-rain", beeCanWorkInRain); + beeCanWorkInRain = getBoolean("mobs.bee.can-work-in-rain", beeCanWorkInRain);
} }
public double blazeMaxHealth = 20.0D; public boolean blazeRidable = false;

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] API for any mob to burn daylight
Co-authored by: Encode42 <me@encode42.dev> Co-authored by: Encode42 <me@encode42.dev>
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index cb062cfb6f4809fc580108503fe77e579ab954f5..c8df18120e1d8de44df7b0636ea697c0951fb38c 100644 index a1aaef67d5f4ee42714638e324f7965f2ad27eb0..776cef835e2512bde83842e72b1bd00250374eb6 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java --- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -477,6 +477,21 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -477,6 +477,21 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -32,7 +32,7 @@ index cb062cfb6f4809fc580108503fe77e579ab954f5..c8df18120e1d8de44df7b0636ea697c0
return this.hardCollides; return this.hardCollides;
} }
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index cb8f198801f74a6cd3cc0ae676005d72badff446..84a967b39e737d00b388b5ae743b157388e8b6db 100644 index 9cf87d4009e8d71d844cf1583a1457b45a523fff..75e994b0da981190083c8cda27a253116221aadb 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -265,6 +265,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -265,6 +265,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -92,7 +92,7 @@ index cb8f198801f74a6cd3cc0ae676005d72badff446..84a967b39e737d00b388b5ae743b1573
public boolean isSensitiveToWater() { public boolean isSensitiveToWater() {
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
index 1f1c7a8668dcdf7850720b46b395322601dbf9a0..f2ae40878dbc3d7c05e986933767f7bf2f6e0e0a 100644 index b0ce2885a304cb15964a1d3bf047c49f95ab594d..6810c5af5c27acadb28b8a1e88c7c1cdf773835f 100644
--- a/src/main/java/net/minecraft/world/entity/Mob.java --- a/src/main/java/net/minecraft/world/entity/Mob.java
+++ b/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java
@@ -1733,17 +1733,7 @@ public abstract class Mob extends LivingEntity implements Targeting { @@ -1733,17 +1733,7 @@ public abstract class Mob extends LivingEntity implements Targeting {
@@ -191,7 +191,7 @@ index 93443238b77c04f6a9da3c25427d200ccf4699f8..892ae3a9ac2395896ff7881c49eaece8
// Paper end // Paper end
diff --git a/src/main/java/net/minecraft/world/entity/monster/Husk.java b/src/main/java/net/minecraft/world/entity/monster/Husk.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Husk.java b/src/main/java/net/minecraft/world/entity/monster/Husk.java
index bf0d201f0211a3d4d61fdf0fbea7bdf4ea220458..e36e029759b5dbc9c3641a1a3c1f28a538bd79c8 100644 index 31706620960f5f153565f3cf64e32d0f4d10feb8..1df39e11d4fe3146fba9a0605c623384513311ac 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Husk.java --- a/src/main/java/net/minecraft/world/entity/monster/Husk.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Husk.java +++ b/src/main/java/net/minecraft/world/entity/monster/Husk.java
@@ -20,6 +20,7 @@ public class Husk extends Zombie { @@ -20,6 +20,7 @@ public class Husk extends Zombie {
@@ -201,7 +201,7 @@ index bf0d201f0211a3d4d61fdf0fbea7bdf4ea220458..e36e029759b5dbc9c3641a1a3c1f28a5
+ this.setShouldBurnInDay(false); // Purpur + this.setShouldBurnInDay(false); // Purpur
} }
@Override // Purpur start
@@ -75,7 +76,7 @@ public class Husk extends Zombie { @@ -75,7 +76,7 @@ public class Husk extends Zombie {
@Override @Override
@@ -212,7 +212,7 @@ index bf0d201f0211a3d4d61fdf0fbea7bdf4ea220458..e36e029759b5dbc9c3641a1a3c1f28a5
@Override @Override
diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java
index 33e2f87c38fdbd79c3dcccc0c0dada5e05f78871..7cf3014eb0c658dd2e9d8ee369549eb17a93c9d3 100644 index 6ae67916366ebdc5eed859c4c821e852781c5441..7897d72dacc787b027306911eea4d59e31d06142 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java
@@ -59,6 +59,7 @@ public class Phantom extends FlyingMob implements Enemy { @@ -59,6 +59,7 @@ public class Phantom extends FlyingMob implements Enemy {
@@ -228,8 +228,8 @@ index 33e2f87c38fdbd79c3dcccc0c0dada5e05f78871..7cf3014eb0c658dd2e9d8ee369549eb1
@Override @Override
public void aiStep() { public void aiStep() {
- // Purpur start - // Purpur start
- boolean burnFromDaylight = this.shouldBurnInDay && this.level.purpurConfig.phantomBurnInDaylight; - boolean burnFromDaylight = this.shouldBurnInDay && this.level().purpurConfig.phantomBurnInDaylight;
- boolean burnFromLightSource = this.level.purpurConfig.phantomBurnInLight > 0 && this.level.getMaxLocalRawBrightness(blockPosition()) >= this.level.purpurConfig.phantomBurnInLight; - boolean burnFromLightSource = this.level().purpurConfig.phantomBurnInLight > 0 && this.level.getMaxLocalRawBrightness(blockPosition()) >= this.level().purpurConfig.phantomBurnInLight;
- if (this.isAlive() && (burnFromDaylight || burnFromLightSource)) { // Paper - Configurable Burning - if (this.isAlive() && (burnFromDaylight || burnFromLightSource)) { // Paper - Configurable Burning
- if (getRider() == null || !this.isControllable()) - if (getRider() == null || !this.isControllable())
- // Purpur end - // Purpur end
@@ -268,8 +268,8 @@ index 33e2f87c38fdbd79c3dcccc0c0dada5e05f78871..7cf3014eb0c658dd2e9d8ee369549eb1
+ // private boolean shouldBurnInDay = true; // Purpur - moved to LivingEntity - keep methods for ABI compatibility + // private boolean shouldBurnInDay = true; // Purpur - moved to LivingEntity - keep methods for ABI compatibility
+ // Purpur start + // Purpur start
+ public boolean shouldBurnInDay() { + public boolean shouldBurnInDay() {
+ boolean burnFromDaylight = this.shouldBurnInDay && this.level.purpurConfig.phantomBurnInDaylight; + boolean burnFromDaylight = this.shouldBurnInDay && this.level().purpurConfig.phantomBurnInDaylight;
+ boolean burnFromLightSource = this.level.purpurConfig.phantomBurnInLight > 0 && this.level.getMaxLocalRawBrightness(blockPosition()) >= this.level.purpurConfig.phantomBurnInLight; + boolean burnFromLightSource = this.level().purpurConfig.phantomBurnInLight > 0 && this.level.getMaxLocalRawBrightness(blockPosition()) >= this.level().purpurConfig.phantomBurnInLight;
+ return burnFromDaylight || burnFromLightSource; + return burnFromDaylight || burnFromLightSource;
+ } + }
+ // Purpur End + // Purpur End
@@ -277,7 +277,7 @@ index 33e2f87c38fdbd79c3dcccc0c0dada5e05f78871..7cf3014eb0c658dd2e9d8ee369549eb1
// Paper end // Paper end
private static enum AttackPhase { private static enum AttackPhase {
diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
index 54ee2eafe257fe8ac16ded66a8c49ba68d433450..2a50dcb60b062cff5b8bb2fcc42100c2e799fd5d 100644 index a676d66dcb5ee72e6d8ffef4e210a3d2c8d605f2..0bc90b6d5c5a3cb3477d41336a9bb1130ff32fa1 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
@@ -95,11 +95,12 @@ public class Zombie extends Monster { @@ -95,11 +95,12 @@ public class Zombie extends Monster {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Config MobEffect by world
diff --git a/src/main/java/net/minecraft/world/effect/MobEffect.java b/src/main/java/net/minecraft/world/effect/MobEffect.java diff --git a/src/main/java/net/minecraft/world/effect/MobEffect.java b/src/main/java/net/minecraft/world/effect/MobEffect.java
index bcce17f884b57e619749351b7b2047f0a5f9be71..350ad84b02ec85566dc360b3d760913507426519 100644 index bcce17f884b57e619749351b7b2047f0a5f9be71..878f3da0067f89f47141f41c733bef67f0987929 100644
--- a/src/main/java/net/minecraft/world/effect/MobEffect.java --- a/src/main/java/net/minecraft/world/effect/MobEffect.java
+++ b/src/main/java/net/minecraft/world/effect/MobEffect.java +++ b/src/main/java/net/minecraft/world/effect/MobEffect.java
@@ -60,16 +60,16 @@ public class MobEffect { @@ -60,16 +60,16 @@ public class MobEffect {
@@ -13,20 +13,20 @@ index bcce17f884b57e619749351b7b2047f0a5f9be71..350ad84b02ec85566dc360b3d7609135
if (this == MobEffects.REGENERATION) { if (this == MobEffects.REGENERATION) {
if (entity.getHealth() < entity.getMaxHealth()) { if (entity.getHealth() < entity.getMaxHealth()) {
- entity.heal(1.0F, RegainReason.MAGIC_REGEN); // CraftBukkit - entity.heal(1.0F, RegainReason.MAGIC_REGEN); // CraftBukkit
+ entity.heal(entity.level.purpurConfig.entityHealthRegenAmount, RegainReason.MAGIC_REGEN); // CraftBukkit // Purpur + entity.heal(entity.level().purpurConfig.entityHealthRegenAmount, RegainReason.MAGIC_REGEN); // CraftBukkit // Purpur
} }
} else if (this == MobEffects.POISON) { } else if (this == MobEffects.POISON) {
- if (entity.getHealth() > 1.0F) { - if (entity.getHealth() > 1.0F) {
- entity.hurt(entity.damageSources().poison, 1.0F); // CraftBukkit - DamageSource.MAGIC -> CraftEventFactory.POISON - entity.hurt(entity.damageSources().poison, 1.0F); // CraftBukkit - DamageSource.MAGIC -> CraftEventFactory.POISON
+ if (entity.getHealth() > entity.level.purpurConfig.entityMinimalHealthPoison) { // Purpur + if (entity.getHealth() > entity.level().purpurConfig.entityMinimalHealthPoison) { // Purpur
+ entity.hurt(entity.damageSources().poison, entity.level.purpurConfig.entityPoisonDegenerationAmount); // CraftBukkit - DamageSource.MAGIC -> CraftEventFactory.POISON // Purpur + entity.hurt(entity.damageSources().poison, entity.level().purpurConfig.entityPoisonDegenerationAmount); // CraftBukkit - DamageSource.MAGIC -> CraftEventFactory.POISON // Purpur
} }
} else if (this == MobEffects.WITHER) { } else if (this == MobEffects.WITHER) {
- entity.hurt(entity.damageSources().wither(), 1.0F); - entity.hurt(entity.damageSources().wither(), 1.0F);
+ entity.hurt(entity.damageSources().wither(), entity.level.purpurConfig.entityWitherDegenerationAmount); // Purpur + entity.hurt(entity.damageSources().wither(), entity.level().purpurConfig.entityWitherDegenerationAmount); // Purpur
} else if (this == MobEffects.HUNGER && entity instanceof Player) { } else if (this == MobEffects.HUNGER && entity instanceof Player) {
- ((Player) entity).causeFoodExhaustion(0.005F * (float) (amplifier + 1), org.bukkit.event.entity.EntityExhaustionEvent.ExhaustionReason.HUNGER_EFFECT); // CraftBukkit - EntityExhaustionEvent - ((Player) entity).causeFoodExhaustion(0.005F * (float) (amplifier + 1), org.bukkit.event.entity.EntityExhaustionEvent.ExhaustionReason.HUNGER_EFFECT); // CraftBukkit - EntityExhaustionEvent
+ ((Player) entity).causeFoodExhaustion(entity.level.purpurConfig.humanHungerExhaustionAmount * (float) (amplifier + 1), org.bukkit.event.entity.EntityExhaustionEvent.ExhaustionReason.HUNGER_EFFECT); // CraftBukkit - EntityExhaustionEvent // Purpur + ((Player) entity).causeFoodExhaustion(entity.level().purpurConfig.humanHungerExhaustionAmount * (float) (amplifier + 1), org.bukkit.event.entity.EntityExhaustionEvent.ExhaustionReason.HUNGER_EFFECT); // CraftBukkit - EntityExhaustionEvent // Purpur
} else if (this == MobEffects.SATURATION && entity instanceof Player) { } else if (this == MobEffects.SATURATION && entity instanceof Player) {
if (!entity.level().isClientSide) { if (!entity.level().isClientSide) {
// CraftBukkit start // CraftBukkit start
@@ -35,12 +35,12 @@ index bcce17f884b57e619749351b7b2047f0a5f9be71..350ad84b02ec85566dc360b3d7609135
if (!event.isCancelled()) { if (!event.isCancelled()) {
- entityhuman.getFoodData().eat(event.getFoodLevel() - oldFoodLevel, 1.0F); - entityhuman.getFoodData().eat(event.getFoodLevel() - oldFoodLevel, 1.0F);
+ entityhuman.getFoodData().eat(event.getFoodLevel() - oldFoodLevel, entity.level.purpurConfig.humanSaturationRegenAmount); // Purpur + entityhuman.getFoodData().eat(event.getFoodLevel() - oldFoodLevel, entity.level().purpurConfig.humanSaturationRegenAmount); // Purpur
} }
((ServerPlayer) entityhuman).connection.send(new ClientboundSetHealthPacket(((ServerPlayer) entityhuman).getBukkitEntity().getScaledHealth(), entityhuman.getFoodData().foodLevel, entityhuman.getFoodData().saturationLevel)); ((ServerPlayer) entityhuman).connection.send(new ClientboundSetHealthPacket(((ServerPlayer) entityhuman).getBukkitEntity().getScaledHealth(), entityhuman.getFoodData().foodLevel, entityhuman.getFoodData().saturationLevel));
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 6bf8059ab05652d604103f8421c35b79b1dcfcb6..6445b71428260809b476ccd0a21a0180715b436e 100644 index fdd0a35b722a9056840edbac3bcb391bc062e499..9102c90bbc52bd5323cce4cfb5eb40e7e8b086ed 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -333,6 +333,21 @@ public class PurpurWorldConfig { @@ -333,6 +333,21 @@ public class PurpurWorldConfig {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Beacon Activation Range Configurable
diff --git a/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java diff --git a/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java
index 59246e24558569f7f50b4d4d508616798091c888..cc03c02f290ee8d58a2fea54b1f977f49a2cec6e 100644 index 59246e24558569f7f50b4d4d508616798091c888..69e28b65a4a47dc61bae17b65f3f34a8cc3ef6f6 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java --- a/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java
@@ -84,6 +84,16 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider, Name @@ -84,6 +84,16 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider, Name
@@ -15,10 +15,10 @@ index 59246e24558569f7f50b4d4d508616798091c888..cc03c02f290ee8d58a2fea54b1f977f4
+ // Purpur Start + // Purpur Start
+ if (this.level != null) { + if (this.level != null) {
+ switch (this.levels) { + switch (this.levels) {
+ case 1: return this.level.purpurConfig.beaconLevelOne; + case 1: return this.level().purpurConfig.beaconLevelOne;
+ case 2: return this.level.purpurConfig.beaconLevelTwo; + case 2: return this.level().purpurConfig.beaconLevelTwo;
+ case 3: return this.level.purpurConfig.beaconLevelThree; + case 3: return this.level().purpurConfig.beaconLevelThree;
+ case 4: return this.level.purpurConfig.beaconLevelFour; + case 4: return this.level().purpurConfig.beaconLevelFour;
+ } + }
+ } + }
+ // Purpur End + // Purpur End
@@ -26,7 +26,7 @@ index 59246e24558569f7f50b4d4d508616798091c888..cc03c02f290ee8d58a2fea54b1f977f4
} else { } else {
return effectRange; return effectRange;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 6445b71428260809b476ccd0a21a0180715b436e..f381566fa0712a183c3af7fff1043c99a855efbb 100644 index 9102c90bbc52bd5323cce4cfb5eb40e7e8b086ed..1a2474db319cd9b2a1ecc3cd87d48aed156a773f 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -525,6 +525,17 @@ public class PurpurWorldConfig { @@ -525,6 +525,17 @@ public class PurpurWorldConfig {

Some files were not shown because too many files have changed in this diff Show More