diff --git a/gradle.properties b/gradle.properties index eec555ca9..b50389f35 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,10 +1,10 @@ group = org.purpurmc.purpur -version = 1.18.1-R0.1-SNAPSHOT +version = 1.18.2-R0.1-SNAPSHOT -mcVersion = 1.18.1 +mcVersion = 1.18.2 packageVersion = 1_18_R1 -paperCommit = 30cb7d0407bfb01a3bc0cc2da1dc0af32dfae5a4 +paperCommit = 0859f594698246d3999ea9829393bc90cf783088 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/api/0001-Pufferfish-API-Changes.patch b/patches/api/0001-Pufferfish-API-Changes.patch index c17c6007d..9cb9db83e 100644 --- a/patches/api/0001-Pufferfish-API-Changes.patch +++ b/patches/api/0001-Pufferfish-API-Changes.patch @@ -3,27 +3,12 @@ From: Kevin Raneri Date: Tue, 9 Nov 2021 14:01:56 -0500 Subject: [PATCH] Pufferfish API Changes -Pufferfish -Copyright (C) 2022 Pufferfish Studios LLC - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . diff --git a/build.gradle.kts b/build.gradle.kts -index 001c2b963205012f340db0d539e4033c748124ce..93390eaead78d229902df0f7c8f9b30cb6174de7 100644 +index b71c38473c3a9fddbb26dcc06df0c1adcdc871f6..20df1ad509f2b5d6204d3ff550af0078a7268537 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -40,6 +40,7 @@ dependencies { +@@ -41,6 +41,7 @@ dependencies { apiAndDocs("net.kyori:adventure-text-serializer-plain") api("org.apache.logging.log4j:log4j-api:2.17.1") api("org.slf4j:slf4j-api:1.8.0-beta4") @@ -31,7 +16,7 @@ index 001c2b963205012f340db0d539e4033c748124ce..93390eaead78d229902df0f7c8f9b30c implementation("org.ow2.asm:asm:9.2") implementation("org.ow2.asm:asm-commons:9.2") -@@ -81,6 +82,13 @@ val generateApiVersioningFile by tasks.registering { +@@ -82,6 +83,13 @@ val generateApiVersioningFile by tasks.registering { } } diff --git a/patches/api/0003-Build-System-Changes.patch b/patches/api/0003-Build-System-Changes.patch index 31330b220..2d3fa5331 100644 --- a/patches/api/0003-Build-System-Changes.patch +++ b/patches/api/0003-Build-System-Changes.patch @@ -6,14 +6,14 @@ Subject: [PATCH] Build System Changes todo: merge with rebrand patch diff --git a/build.gradle.kts b/build.gradle.kts -index 554f5e35954f35aecaf454853a0a2999f15d19bc..9203d7aa155319abfab0a65d4ef6804cb7e48769 100644 +index 20df1ad509f2b5d6204d3ff550af0078a7268537..3004506c52b8869dd87bd722065d7d19a1c6c274 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -41,6 +41,7 @@ dependencies { - api("org.apache.logging.log4j:log4j-api:2.17.1") - api("org.slf4j:slf4j-api:1.8.0-beta4") - api("io.sentry:sentry:5.4.0") // Pufferfish -+ api("net.kyori:adventure-text-minimessage:4.1.0-SNAPSHOT") // Purpur +@@ -102,6 +102,7 @@ tasks.jar { + } - implementation("org.ow2.asm:asm:9.2") - implementation("org.ow2.asm:asm-commons:9.2") + tasks.withType { ++ (options as StandardJavadocDocletOptions).addStringOption("-add-modules", "jdk.incubator.vector") // Purpur - our javadocs need this for pufferfish's SIMD patch + val options = options as StandardJavadocDocletOptions + options.overview = "src/main/javadoc/overview.html" + options.isDocFilesSubDirs = true diff --git a/patches/api/0007-Ridables.patch b/patches/api/0007-Ridables.patch index d726eb07a..84ff70db8 100644 --- a/patches/api/0007-Ridables.patch +++ b/patches/api/0007-Ridables.patch @@ -5,12 +5,12 @@ Subject: [PATCH] Ridables diff --git a/src/main/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java b/src/main/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java -index 2405254739a83b2fb517da7fa4ea0721c68f9f6d..dc0535d5ea5b2f4002a428ec64ea52fefbace7c4 100644 +index 8fd399f791b45eb7fc62693ca954eea0c68e2881..22705359d5b3b1af522ff5575c07ca5e20fac255 100644 --- a/src/main/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java +++ b/src/main/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java -@@ -197,6 +197,12 @@ public interface VanillaGoal extends Goal { - GoalKey RAIDER_MOVE_THROUGH_VILLAGE = GoalKey.of(Raider.class, NamespacedKey.minecraft("raider_move_through_village")); - GoalKey PARROT_WANDER = GoalKey.of(Creature.class, NamespacedKey.minecraft("parrot_wander")); +@@ -199,6 +199,12 @@ public interface VanillaGoal extends Goal { + GoalKey CLIMB_ON_TOP_OF_POWDER_SNOW = GoalKey.of(Mob.class, NamespacedKey.minecraft("climb_on_top_of_powder_snow")); + GoalKey WOLF_PANIC = GoalKey.of(Wolf.class, NamespacedKey.minecraft("wolf_panic")); + // Purpur start + GoalKey MOB_HAS_RIDER = GoalKey.of(Mob.class, NamespacedKey.minecraft("has_rider")); diff --git a/patches/api/0020-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch b/patches/api/0020-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch index 2b6f3a7e3..ac4b12f34 100644 --- a/patches/api/0020-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch +++ b/patches/api/0020-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Phantoms attracted to crystals and crystals shoot phantoms diff --git a/src/main/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java b/src/main/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java -index dc0535d5ea5b2f4002a428ec64ea52fefbace7c4..25a45c8462e3b3accca81ed8d92c1072e3589368 100644 +index 22705359d5b3b1af522ff5575c07ca5e20fac255..ba4587a434d40fae7aeff655c1cd4cd3346d496a 100644 --- a/src/main/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java +++ b/src/main/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java -@@ -201,6 +201,8 @@ public interface VanillaGoal extends Goal { +@@ -203,6 +203,8 @@ public interface VanillaGoal extends Goal { GoalKey MOB_HAS_RIDER = GoalKey.of(Mob.class, NamespacedKey.minecraft("has_rider")); GoalKey HORSE_HAS_RIDER = GoalKey.of(AbstractHorse.class, NamespacedKey.minecraft("horse_has_rider")); GoalKey LLAMA_HAS_RIDER = GoalKey.of(Llama.class, NamespacedKey.minecraft("llama_has_rider")); diff --git a/patches/api/0021-ChatColor-conveniences.patch b/patches/api/0021-ChatColor-conveniences.patch index 3206d30e6..77b1b7d02 100644 --- a/patches/api/0021-ChatColor-conveniences.patch +++ b/patches/api/0021-ChatColor-conveniences.patch @@ -5,7 +5,7 @@ Subject: [PATCH] ChatColor conveniences diff --git a/src/main/java/org/bukkit/ChatColor.java b/src/main/java/org/bukkit/ChatColor.java -index 4594701d77c5d0f744bece871b98d9f6f73eb5a7..a991bfe33f695a6166be6937039098ddea892f7b 100644 +index 4594701d77c5d0f744bece871b98d9f6f73eb5a7..924af5982b1990492cafe6ef8d9f284f7933e7c4 100644 --- a/src/main/java/org/bukkit/ChatColor.java +++ b/src/main/java/org/bukkit/ChatColor.java @@ -2,6 +2,7 @@ package org.bukkit; @@ -62,7 +62,7 @@ index 4594701d77c5d0f744bece871b98d9f6f73eb5a7..a991bfe33f695a6166be6937039098dd + + @NotNull + public static net.kyori.adventure.text.Component parseMM(@NotNull String string, @Nullable Object... args) { -+ return net.kyori.adventure.text.minimessage.MiniMessage.get().parse(String.format(string, args)); ++ return net.kyori.adventure.text.minimessage.MiniMessage.miniMessage().deserialize(String.format(string, args)); + } + + @Deprecated diff --git a/patches/api/0025-Add-option-to-disable-zombie-aggressiveness-towards-.patch b/patches/api/0025-Add-option-to-disable-zombie-aggressiveness-towards-.patch index c7c10d888..3d35f7ab5 100644 --- a/patches/api/0025-Add-option-to-disable-zombie-aggressiveness-towards-.patch +++ b/patches/api/0025-Add-option-to-disable-zombie-aggressiveness-towards-.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Add option to disable zombie aggressiveness towards villagers diff --git a/src/main/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java b/src/main/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java -index 25a45c8462e3b3accca81ed8d92c1072e3589368..246e89e2d23cb049254611db223f34bde970d84b 100644 +index ba4587a434d40fae7aeff655c1cd4cd3346d496a..2a8c6da0f9ffa1f94cfd37d1068511c8941d27ce 100644 --- a/src/main/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java +++ b/src/main/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java -@@ -203,6 +203,8 @@ public interface VanillaGoal extends Goal { +@@ -205,6 +205,8 @@ public interface VanillaGoal extends Goal { GoalKey LLAMA_HAS_RIDER = GoalKey.of(Llama.class, NamespacedKey.minecraft("llama_has_rider")); GoalKey FIND_CRYSTAL = GoalKey.of(Phantom.class, NamespacedKey.minecraft("find_crystal")); GoalKey ORBIT_CRYSTAL = GoalKey.of(Phantom.class, NamespacedKey.minecraft("orbit_crystal")); diff --git a/patches/api/0028-Rabid-Wolf-API.patch b/patches/api/0028-Rabid-Wolf-API.patch index 1b9d89c09..26d8cf0ed 100644 --- a/patches/api/0028-Rabid-Wolf-API.patch +++ b/patches/api/0028-Rabid-Wolf-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Rabid Wolf API diff --git a/src/main/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java b/src/main/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java -index 246e89e2d23cb049254611db223f34bde970d84b..06dfb076431aff4d87dd4f587d42087e54b2382b 100644 +index 2a8c6da0f9ffa1f94cfd37d1068511c8941d27ce..aa0a081819672c14d9f04c07f4685768cbe8d914 100644 --- a/src/main/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java +++ b/src/main/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java -@@ -205,6 +205,7 @@ public interface VanillaGoal extends Goal { +@@ -207,6 +207,7 @@ public interface VanillaGoal extends Goal { GoalKey ORBIT_CRYSTAL = GoalKey.of(Phantom.class, NamespacedKey.minecraft("orbit_crystal")); GoalKey DROWNED_ATTACK_VILLAGER = GoalKey.of(Drowned.class, NamespacedKey.minecraft("drowned_attack_villager")); GoalKey ZOMBIE_ATTACK_VILLAGER = GoalKey.of(Zombie.class, NamespacedKey.minecraft("zombie_attack_villager")); diff --git a/patches/api/0035-Iron-golem-poppy-calms-anger.patch b/patches/api/0035-Iron-golem-poppy-calms-anger.patch index 1af8b0d9e..06653eb40 100644 --- a/patches/api/0035-Iron-golem-poppy-calms-anger.patch +++ b/patches/api/0035-Iron-golem-poppy-calms-anger.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Iron golem poppy calms anger diff --git a/src/main/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java b/src/main/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java -index 06dfb076431aff4d87dd4f587d42087e54b2382b..b3e4d10e54952be23ba3f4bcc374c24cff8b0ce2 100644 +index aa0a081819672c14d9f04c07f4685768cbe8d914..c18940f5c3b3436c19ca6ea466bc8a78579c795f 100644 --- a/src/main/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java +++ b/src/main/java/com/destroystokyo/paper/entity/ai/VanillaGoal.java -@@ -206,6 +206,7 @@ public interface VanillaGoal extends Goal { +@@ -208,6 +208,7 @@ public interface VanillaGoal extends Goal { GoalKey DROWNED_ATTACK_VILLAGER = GoalKey.of(Drowned.class, NamespacedKey.minecraft("drowned_attack_villager")); GoalKey ZOMBIE_ATTACK_VILLAGER = GoalKey.of(Zombie.class, NamespacedKey.minecraft("zombie_attack_villager")); GoalKey AVOID_RABID_WOLF = GoalKey.of(Wolf.class, NamespacedKey.minecraft("avoid_rabid_wolf")); diff --git a/patches/api/0048-Add-jdk-modules-for-javadocs-fixes-build.patch b/patches/api/0048-Add-jdk-modules-for-javadocs-fixes-build.patch deleted file mode 100644 index a4429a08e..000000000 --- a/patches/api/0048-Add-jdk-modules-for-javadocs-fixes-build.patch +++ /dev/null @@ -1,18 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: BillyGalbreath -Date: Sat, 12 Feb 2022 06:33:47 -0600 -Subject: [PATCH] Add jdk modules for javadocs (fixes build) - - -diff --git a/build.gradle.kts b/build.gradle.kts -index 9719d5af48dac1f75f72bfd34a6fe146bb4011bc..bac527acaa1826486a8183bcccb4d64654a0efed 100644 ---- a/build.gradle.kts -+++ b/build.gradle.kts -@@ -102,6 +102,7 @@ tasks.jar { - } - - tasks.withType { -+ (options as StandardJavadocDocletOptions).addStringOption("-add-modules", "jdk.incubator.vector") // Purpur - our javadocs need this for pufferfish's SIMD patch - inputs.files(apiAndDocs) - .ignoreEmptyDirectories() - .withPropertyName(apiAndDocs.name + "-configuration") diff --git a/patches/server/0001-Pufferfish-Server-Changes.patch b/patches/server/0001-Pufferfish-Server-Changes.patch index f505fa495..0a77e47d3 100644 --- a/patches/server/0001-Pufferfish-Server-Changes.patch +++ b/patches/server/0001-Pufferfish-Server-Changes.patch @@ -3,24 +3,9 @@ From: Kevin Raneri Date: Wed, 3 Feb 2021 23:02:38 -0600 Subject: [PATCH] Pufferfish Server Changes -Pufferfish -Copyright (C) 2022 Pufferfish Studios LLC - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . diff --git a/build.gradle.kts b/build.gradle.kts -index 4662952bd0a389fe77e00ede9ab4a57f33522794..a37ca23682272d5ddaf1a2246917e6c46b69da86 100644 +index 4beb35d1e5b013395f5df101e843f41c2ce174ad..27c18ced1ce6d38c9cd05eb4269f25a9d6520030 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -18,8 +18,12 @@ repositories { @@ -629,7 +614,7 @@ index 0000000000000000000000000000000000000000..020368da69b9a492155f6de6297f7473 +} diff --git a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java new file mode 100644 -index 0000000000000000000000000000000000000000..17bc75a0f0e665a3b7abaaf2bf197abe3cd2af20 +index 0000000000000000000000000000000000000000..56330536c52fa327ef89d7a08e72557c6633c8bb --- /dev/null +++ b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java @@ -0,0 +1,291 @@ @@ -714,7 +699,7 @@ index 0000000000000000000000000000000000000000..17bc75a0f0e665a3b7abaaf2bf197abe + try { + method.invoke(null); + } catch (Throwable t) { -+ MinecraftServer.LOGGER.log(Level.WARN, "Failed to load configuration option from " + method.getName(), t); ++ MinecraftServer.LOGGER.warn("Failed to load configuration option from " + method.getName(), t); + } + } + } @@ -880,7 +865,7 @@ index 0000000000000000000000000000000000000000..17bc75a0f0e665a3b7abaaf2bf197abe + getStringList("dab.blacklisted-entities", "activation-range.blacklisted-entities", Collections.emptyList(), "A list of entities to ignore for activation") + .forEach(name -> EntityType.byString(name).ifPresentOrElse(entityType -> { + entityType.dabEnabled = false; -+ }, () -> MinecraftServer.LOGGER.log(Level.WARN, "Unknown entity \"" + name + "\""))); ++ }, () -> MinecraftServer.LOGGER.warn("Unknown entity \"" + name + "\""))); + + setComment("dab", "Optimizes entity brains when", "they're far away from the player"); + } @@ -1189,7 +1174,7 @@ index 0000000000000000000000000000000000000000..401b42e29bccb5251684062f10b2e0f8 +} diff --git a/src/main/java/gg/pufferfish/pufferfish/flare/FlareCommand.java b/src/main/java/gg/pufferfish/pufferfish/flare/FlareCommand.java new file mode 100644 -index 0000000000000000000000000000000000000000..6401e508729407254abd8caea988f84d1eb7cb0f +index 0000000000000000000000000000000000000000..3785d1512eb650f91d58903672c059e7449598fc --- /dev/null +++ b/src/main/java/gg/pufferfish/pufferfish/flare/FlareCommand.java @@ -0,0 +1,136 @@ @@ -1295,7 +1280,7 @@ index 0000000000000000000000000000000000000000..6401e508729407254abd8caea988f84d + } catch (UserReportableException e) { + sender.sendMessage(Component.text("Flare failed to start: " + e.getUserError(), NamedTextColor.RED)); + if (e.getCause() != null) { -+ MinecraftServer.LOGGER.log(Level.WARN, "Flare failed to start", e); ++ MinecraftServer.LOGGER.warn("Flare failed to start", e); + } + } + }); @@ -1331,7 +1316,7 @@ index 0000000000000000000000000000000000000000..6401e508729407254abd8caea988f84d +} diff --git a/src/main/java/gg/pufferfish/pufferfish/flare/FlareSetup.java b/src/main/java/gg/pufferfish/pufferfish/flare/FlareSetup.java new file mode 100644 -index 0000000000000000000000000000000000000000..0435f1dbec1cc9fc1751567128d9fff3f246c7b4 +index 0000000000000000000000000000000000000000..cd22e4dcc8b7b57b10a95ef084637249a98e524f --- /dev/null +++ b/src/main/java/gg/pufferfish/pufferfish/flare/FlareSetup.java @@ -0,0 +1,33 @@ @@ -1355,11 +1340,11 @@ index 0000000000000000000000000000000000000000..0435f1dbec1cc9fc1751567128d9fff3 + initialized = true; + try { + for (String warning : FlareInitializer.initialize()) { -+ MinecraftServer.LOGGER.log(Level.WARN, "Flare warning: " + warning); ++ MinecraftServer.LOGGER.warn("Flare warning: " + warning); + } + supported = true; + } catch (InitializationException e) { -+ MinecraftServer.LOGGER.log(Level.WARN, "Failed to enable Flare:", e); ++ MinecraftServer.LOGGER.warn("Failed to enable Flare:", e); + } + } + @@ -2135,30 +2120,6 @@ index 0000000000000000000000000000000000000000..facd55463d44cb7e3d2ca6892982f549 + return backingMap.size(); + } +} -diff --git a/src/main/java/net/minecraft/Util.java b/src/main/java/net/minecraft/Util.java -index 34e571b702684673b89103176838dc246ff9b24d..3bef6ecc820b57f3953b48ecbd451d457ecc46e1 100644 ---- a/src/main/java/net/minecraft/Util.java -+++ b/src/main/java/net/minecraft/Util.java -@@ -392,6 +392,10 @@ public class Util { - - private static final CompletableFuture[] EMPTY_FUTURE = new CompletableFuture[0]; // Paper - public static CompletableFuture> sequence(List> futures) { -+ // Pufferfish start - faster sequencing without all of.. _that_ -+ return CompletableFuture.allOf(futures.toArray(new CompletableFuture[futures.size()])) -+ .thenApply(unused -> futures.stream().map(CompletableFuture::join).collect(Collectors.toList())); -+ /* - // Paper start - optimize - return CompletableFuture.allOf(futures.toArray(EMPTY_FUTURE)) - .thenApply(v -> { -@@ -402,6 +406,8 @@ public class Util { - return list; - }); - // Paper end -+ */ -+ // Pufferfish end - } - - public static CompletableFuture> sequenceFailFast(List> futures) { diff --git a/src/main/java/net/minecraft/server/MCUtil.java b/src/main/java/net/minecraft/server/MCUtil.java index 7bddc7517356cc74104dcc5c7c55522a53f2596f..d6a57cdad2c92521a800cb18d060d9d6d627a8c0 100644 --- a/src/main/java/net/minecraft/server/MCUtil.java @@ -2173,7 +2134,7 @@ index 7bddc7517356cc74104dcc5c7c55522a53f2596f..d6a57cdad2c92521a800cb18d060d9d6 public static long getCoordinateKey(final ChunkPos pair) { diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index c847a2b935130a293d9ac4c196c9cff27470649b..505e37b45c2712bb42cd834b527e8ddb0eae1236 100644 +index 0a0bc8c45cb70073cb94dee25b5e54fb98bf9c8e..b53fa61dc542937641c36d90c6613e072a05ec5f 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -310,6 +310,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop S spin(Function serverFactory) { AtomicReference atomicreference = new AtomicReference(); -@@ -1719,7 +1721,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop loadedChunkMap = new Long2ObjectOpenHashMap<>(8192, 0.5f); +@@ -74,6 +74,9 @@ public class ServerChunkCache extends ChunkSource { + final it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap loadedChunkMap = new it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap<>(8192, 0.5f); private final LevelChunk[] lastLoadedChunks = new LevelChunk[4 * 4]; + @@ -2289,7 +2250,7 @@ index e20fc528b85a8278bffab32845daac2208836748..7780c6cd92a716e62625df95841680b0 private static int getChunkCacheKey(int x, int z) { return x & 3 | ((z & 3) << 2); -@@ -970,6 +973,7 @@ public class ServerChunkCache extends ChunkSource { +@@ -969,6 +972,7 @@ public class ServerChunkCache extends ChunkSource { ProfilerFiller gameprofilerfiller = this.level.getProfiler(); gameprofilerfiller.push("pollingChunks"); @@ -2297,7 +2258,7 @@ index e20fc528b85a8278bffab32845daac2208836748..7780c6cd92a716e62625df95841680b0 int k = this.level.getGameRules().getInt(GameRules.RULE_RANDOMTICKING); boolean flag1 = level.ticksPerSpawnCategory.getLong(org.bukkit.entity.SpawnCategory.ANIMAL) != 0L && worlddata.getGameTime() % level.ticksPerSpawnCategory.getLong(org.bukkit.entity.SpawnCategory.ANIMAL) == 0L; // CraftBukkit -@@ -979,18 +983,25 @@ public class ServerChunkCache extends ChunkSource { +@@ -978,18 +982,25 @@ public class ServerChunkCache extends ChunkSource { // Paper start - per player mob spawning NaturalSpawner.SpawnState spawnercreature_d; // moved down if ((this.spawnFriendlies || this.spawnEnemies) && this.chunkMap.playerMobDistanceMap != null) { // don't count mobs when animals and monsters are disabled @@ -2329,9 +2290,9 @@ index e20fc528b85a8278bffab32845daac2208836748..7780c6cd92a716e62625df95841680b0 gameprofilerfiller.popPush("filteringLoadedChunks"); // Paper - moved down this.level.timings.chunkTicks.startTiming(); // Paper -@@ -1028,8 +1039,8 @@ public class ServerChunkCache extends ChunkSource { +@@ -1027,8 +1038,8 @@ public class ServerChunkCache extends ChunkSource { - if ((true || this.level.isPositionEntityTicking(chunkcoordintpair)) && this.chunkMap.anyPlayerCloseEnoughForSpawning(holder, chunkcoordintpair, false)) { // Paper - optimise anyPlayerCloseEnoughForSpawning // Paper - replace player chunk loader system + if ((true || this.level.isNaturalSpawningAllowed(chunkcoordintpair)) && this.chunkMap.anyPlayerCloseEnoughForSpawning(holder, chunkcoordintpair, false)) { // Paper - optimise anyPlayerCloseEnoughForSpawning // Paper - replace player chunk loader system chunk1.incrementInhabitedTime(j); - if (flag2 && (this.spawnEnemies || this.spawnFriendlies) && this.level.getWorldBorder().isWithinBounds(chunkcoordintpair) && this.chunkMap.anyPlayerCloseEnoughForSpawning(holder, chunkcoordintpair, true)) { // Spigot // Paper - optimise anyPlayerCloseEnoughForSpawning & optimise chunk tick iteration - NaturalSpawner.spawnForChunk(this.level, chunk1, spawnercreature_d, this.spawnFriendlies, this.spawnEnemies, flag1); @@ -2339,8 +2300,8 @@ index e20fc528b85a8278bffab32845daac2208836748..7780c6cd92a716e62625df95841680b0 + NaturalSpawner.spawnForChunk(this.level, chunk1, lastSpawnState, this.spawnFriendlies, this.spawnEnemies, flag1); // Pufferfish } - if ((true || this.level.shouldTickBlocksAt(chunkcoordintpair.toLong()))) { // Paper - replace player chunk loader system -@@ -1091,6 +1102,30 @@ public class ServerChunkCache extends ChunkSource { + if (true || this.level.shouldTickBlocksAt(chunkcoordintpair.toLong())) { // Paper - replace player chunk loader system +@@ -1090,6 +1101,30 @@ public class ServerChunkCache extends ChunkSource { } // Paper end - controlled flush for entity tracker packets } @@ -2372,7 +2333,7 @@ index e20fc528b85a8278bffab32845daac2208836748..7780c6cd92a716e62625df95841680b0 private void getFullChunk(long pos, Consumer chunkConsumer) { diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java -index b0a79e335ac9dc24fc6f18010bf40716ecc724bf..c37afd850654905343dd2eb33881dab7d57d9137 100644 +index 1092ba200a945d8d70e48f956535f56e2743302d..937a93d134dc986fe23e5676d58f7619524b9bf3 100644 --- a/src/main/java/net/minecraft/server/level/ServerEntity.java +++ b/src/main/java/net/minecraft/server/level/ServerEntity.java @@ -174,6 +174,7 @@ public class ServerEntity { @@ -2392,10 +2353,10 @@ index b0a79e335ac9dc24fc6f18010bf40716ecc724bf..c37afd850654905343dd2eb33881dab7 this.wasOnGround = this.entity.isOnGround(); this.teleportDelay = 0; diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 835a17cd4ec487271ba28232280dd0fbf2687c4b..58604c77d9273c866e53f8ee62c7056acc76e004 100644 +index 8e87aca16879d7dd1dc0bd17d3215fca40b547cd..a154761eecb4911f8b646cccbb9b713e0fcc693e 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -667,7 +667,20 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -670,7 +670,20 @@ public class ServerLevel extends Level implements WorldGenLevel { } gameprofilerfiller.push("tick"); @@ -2417,7 +2378,7 @@ index 835a17cd4ec487271ba28232280dd0fbf2687c4b..58604c77d9273c866e53f8ee62c7056a gameprofilerfiller.pop(); } } -@@ -732,9 +745,11 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -735,9 +748,11 @@ public class ServerLevel extends Level implements WorldGenLevel { } // Paper start - optimise random block ticking private final BlockPos.MutableBlockPos chunkTickMutablePosition = new BlockPos.MutableBlockPos(); @@ -2430,7 +2391,7 @@ index 835a17cd4ec487271ba28232280dd0fbf2687c4b..58604c77d9273c866e53f8ee62c7056a public void tickChunk(LevelChunk chunk, int randomTickSpeed) { ChunkPos chunkcoordintpair = chunk.getPos(); boolean flag = this.isRaining(); -@@ -745,7 +760,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -748,7 +763,7 @@ public class ServerLevel extends Level implements WorldGenLevel { gameprofilerfiller.push("thunder"); final BlockPos.MutableBlockPos blockposition = this.chunkTickMutablePosition; // Paper - use mutable to reduce allocation rate, final to force compile fail on change @@ -2439,20 +2400,20 @@ index 835a17cd4ec487271ba28232280dd0fbf2687c4b..58604c77d9273c866e53f8ee62c7056a blockposition.set(this.findLightningTargetAround(this.getBlockRandomPos(j, 0, k, 15))); // Paper if (this.isRainingAt(blockposition)) { DifficultyInstance difficultydamagescaler = this.getCurrentDifficultyAt(blockposition); -@@ -769,7 +784,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -772,7 +787,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } gameprofilerfiller.popPush("iceandsnow"); -- if (!this.paperConfig.disableIceAndSnow && this.randomTickRandom.nextInt(16) == 0) { // Paper - Disable ice and snow // Paper - optimise random ticking -+ if (!this.paperConfig.disableIceAndSnow && (this.currentIceAndSnowTick++ & 15) == 0) { // Paper - Disable ice and snow // Paper - optimise random ticking // Pufferfish - optimize further random ticking +- if (!this.paperConfig.disableIceAndSnow && this.random.nextInt(16) == 0) { // Paper - Disable ice and snow ++ if (!this.paperConfig.disableIceAndSnow && (this.currentIceAndSnowTick++ & 15) == 0) { // Paper - Disable ice and snow // Pufferfish - optimize further random ticking // Paper start - optimise chunk ticking this.getRandomBlockPosition(j, 0, k, 15, blockposition); int normalY = chunk.getHeight(Heightmap.Types.MOTION_BLOCKING, blockposition.getX() & 15, blockposition.getZ() & 15) + 1; diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index d945a22e2bb992f3cbba3c9ed0f660b6a385a1b0..b9f2f6713bd9e3431ddbf2a41f16cbda5739ef57 100644 +index dea4d455d05945505f9ef33793a61783b521bf11..bc67e1a997d59408b00c333184d9f8dcc6cb262a 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1113,6 +1113,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -1107,6 +1107,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser @Override public void handleEditBook(ServerboundEditBookPacket packet) { @@ -2573,10 +2534,10 @@ index 7437f01ca8f416e2c9150250e324af4725a4efb6..7ac51dbfce18a2bc52faa7a915abeccc int LARGE_MAX_STACK_SIZE = 64; diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 9ca080e2745686fc2e39485965ec54c5de0bae6e..fd6e42d3df429aaf753102258b8e65a61ff4d296 100644 +index 84fce7dccf9232209f939a32acfc3131e62eb27c..59ec3d56e88cf6cee218422481457b944ff25998 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -227,7 +227,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i +@@ -230,7 +230,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i public double yo; public double zo; private Vec3 position; @@ -2585,7 +2546,7 @@ index 9ca080e2745686fc2e39485965ec54c5de0bae6e..fd6e42d3df429aaf753102258b8e65a6 private ChunkPos chunkPosition; private Vec3 deltaMovement; public float yRot; // Paper - private->public -@@ -349,6 +349,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i +@@ -352,6 +352,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i return this.originWorld; } // Paper end @@ -2597,7 +2558,7 @@ index 9ca080e2745686fc2e39485965ec54c5de0bae6e..fd6e42d3df429aaf753102258b8e65a6 public float getBukkitYaw() { return this.yRot; } -@@ -372,17 +377,36 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i +@@ -375,17 +380,36 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i this.isLegacyTrackingEntity = isLegacyTrackingEntity; } @@ -2635,7 +2596,7 @@ index 9ca080e2745686fc2e39485965ec54c5de0bae6e..fd6e42d3df429aaf753102258b8e65a6 for (Entity passenger : passengers) { org.spigotmc.TrackingRange.TrackingRangeType passengerType = passenger.trackingRangeType; int passengerRange = chunkMap.getEntityTrackerRange(passengerType.ordinal()); -@@ -391,6 +415,9 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i +@@ -394,6 +418,9 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i range = passengerRange; } } @@ -2645,10 +2606,10 @@ index 9ca080e2745686fc2e39485965ec54c5de0bae6e..fd6e42d3df429aaf753102258b8e65a6 return chunkMap.playerEntityTrackerTrackMaps[type.ordinal()].getObjectsInRange(MCUtil.getCoordinateKey(this)); } -@@ -3871,16 +3898,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i +@@ -3906,16 +3933,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i } - public boolean updateFluidHeightAndDoFluidPushing(Tag tag, double speed) { + public boolean updateFluidHeightAndDoFluidPushing(TagKey tag, double speed) { - if (this.touchingUnloadedChunk()) { + if (false && this.touchingUnloadedChunk()) { // Pufferfish - cost of a lookup here is the same cost as below, so skip return false; @@ -2671,7 +2632,7 @@ index 9ca080e2745686fc2e39485965ec54c5de0bae6e..fd6e42d3df429aaf753102258b8e65a6 double d1 = 0.0D; boolean flag = this.isPushedByFluid(); boolean flag1 = false; -@@ -3888,14 +3917,61 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i +@@ -3923,14 +3952,61 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i int k1 = 0; BlockPos.MutableBlockPos blockposition_mutableblockposition = new BlockPos.MutableBlockPos(); @@ -2739,7 +2700,7 @@ index 9ca080e2745686fc2e39485965ec54c5de0bae6e..fd6e42d3df429aaf753102258b8e65a6 if (d2 >= axisalignedbb.minY) { flag1 = true; -@@ -3917,9 +3993,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i +@@ -3952,9 +4028,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i // CraftBukkit end } } @@ -2753,10 +2714,10 @@ index 9ca080e2745686fc2e39485965ec54c5de0bae6e..fd6e42d3df429aaf753102258b8e65a6 if (vec3d.length() > 0.0D) { if (k1 > 0) { diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java -index 419a7e9614af2328ed401fc954196056243a984c..9bc568a2b0df13f55ee8670839b9e6a6b4f38c2d 100644 +index 79abd84696ef099f6b12ddeaa6e398f18c53316a..29169f9819ebbe0b90d87ed1e5833a3a57e39f06 100644 --- a/src/main/java/net/minecraft/world/entity/EntityType.java +++ b/src/main/java/net/minecraft/world/entity/EntityType.java -@@ -293,6 +293,7 @@ public class EntityType implements EntityTypeTest { +@@ -296,6 +296,7 @@ public class EntityType implements EntityTypeTest { return Registry.ENTITY_TYPE.getOptional(ResourceLocation.tryParse(id)); } @@ -2765,10 +2726,10 @@ index 419a7e9614af2328ed401fc954196056243a984c..9bc568a2b0df13f55ee8670839b9e6a6 public final String id; diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 9822d163a9e4d6ac8240c18a7082e911788d0948..6f98681ac54f575be047867a8c0b58e1dbd2a37d 100644 +index fdd76d1a1636f30f519c434b41061d826c4a8261..6a31e29bce673e698922da3c3ba8fd4d8b0adedb 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -139,7 +139,6 @@ import org.bukkit.event.entity.EntityTeleportEvent; +@@ -141,7 +141,6 @@ import org.bukkit.event.entity.EntityTeleportEvent; import org.bukkit.event.player.PlayerItemConsumeEvent; // CraftBukkit end @@ -2776,7 +2737,7 @@ index 9822d163a9e4d6ac8240c18a7082e911788d0948..6f98681ac54f575be047867a8c0b58e1 public abstract class LivingEntity extends Entity { -@@ -393,8 +392,7 @@ public abstract class LivingEntity extends Entity { +@@ -396,8 +395,7 @@ public abstract class LivingEntity extends Entity { if (this.isAlive()) { boolean flag = this instanceof net.minecraft.world.entity.player.Player; @@ -2786,7 +2747,7 @@ index 9822d163a9e4d6ac8240c18a7082e911788d0948..6f98681ac54f575be047867a8c0b58e1 this.hurt(DamageSource.IN_WALL, 1.0F); } else if (flag && !this.level.getWorldBorder().isWithinBounds(this.getBoundingBox())) { double d0 = this.level.getWorldBorder().getDistanceToBorder(this) + this.level.getWorldBorder().getDamageSafeZone(); -@@ -1287,6 +1285,15 @@ public abstract class LivingEntity extends Entity { +@@ -1290,6 +1288,15 @@ public abstract class LivingEntity extends Entity { return this.getHealth() <= 0.0F; } @@ -2802,7 +2763,7 @@ index 9822d163a9e4d6ac8240c18a7082e911788d0948..6f98681ac54f575be047867a8c0b58e1 @Override public boolean hurt(DamageSource source, float amount) { if (this.isInvulnerableTo(source)) { -@@ -1848,6 +1855,20 @@ public abstract class LivingEntity extends Entity { +@@ -1851,6 +1858,20 @@ public abstract class LivingEntity extends Entity { return this.lastClimbablePos; } @@ -2823,7 +2784,7 @@ index 9822d163a9e4d6ac8240c18a7082e911788d0948..6f98681ac54f575be047867a8c0b58e1 public boolean onClimbable() { if (this.isSpectator()) { return false; -@@ -3545,7 +3566,10 @@ public abstract class LivingEntity extends Entity { +@@ -3540,7 +3561,10 @@ public abstract class LivingEntity extends Entity { Vec3 vec3d1 = new Vec3(entity.getX(), entity.getEyeY(), entity.getZ()); // Paper - diff on change - used in CraftLivingEntity#hasLineOfSight(Location) and CraftWorld#lineOfSightExists @@ -2836,7 +2797,7 @@ index 9822d163a9e4d6ac8240c18a7082e911788d0948..6f98681ac54f575be047867a8c0b58e1 } diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 850a4f8a9bd1dc30b13205e158fcbfaa872d6157..73af374f4aa9e3e8f188434c21a5f1433cffc637 100644 +index b1ae9b0d8b229e2a6797a173cb11ecc0f43e2592..d7a0fb4727e263932846a67c584da2c8d6d4e275 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -206,14 +206,16 @@ public abstract class Mob extends LivingEntity { @@ -2880,7 +2841,7 @@ index 850a4f8a9bd1dc30b13205e158fcbfaa872d6157..73af374f4aa9e3e8f188434c21a5f143 this.level.getProfiler().pop(); } diff --git a/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java b/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java -index 9cbfda029782385d1a7987f5be46d450bd8a758e..52ddf38d5a1894a248e142c6b9ebaff5cc921e5b 100644 +index c770ee21b7b699522941f6a1584d532001c04082..9bce290eb0c2cfef4896a3f2076c80bf3d76bd56 100644 --- a/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java +++ b/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java @@ -22,9 +22,11 @@ public class AttributeMap { @@ -2939,7 +2900,7 @@ index 42d466f7f162943886078eba3db18f2dfc2d7bee..6c0dda1ce018ec6bb2ebb97147045fff } diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java b/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java -index 7fdc1cbd04a5bba9648272985f51c849b07b8223..02f44b5682b99417f3cd6d6b25dc46cdc2a09093 100644 +index c77fad612ba99663af2ec4418e3c2d68752dc2c8..8229001df0a901d9016fb16e4ddc81b5a0f51452 100644 --- a/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java +++ b/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java @@ -51,9 +51,12 @@ public class GoalSelector { @@ -2958,7 +2919,7 @@ index 7fdc1cbd04a5bba9648272985f51c849b07b8223..02f44b5682b99417f3cd6d6b25dc46cd public boolean hasTasks() { for (WrappedGoal task : this.availableGoals) { diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/MoveToBlockGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/MoveToBlockGoal.java -index 7fc40bb5fb6265b283c7c611f63aae76302c0eaf..387d31e342cef73ae769d712ba62e6aabb364e98 100644 +index 26bf383caea68834c654b25653ced9017f1b1b22..615eb55e24d365d994fbfe9d45d2be387fd5d561 100644 --- a/src/main/java/net/minecraft/world/entity/ai/goal/MoveToBlockGoal.java +++ b/src/main/java/net/minecraft/world/entity/ai/goal/MoveToBlockGoal.java @@ -119,6 +119,7 @@ public abstract class MoveToBlockGoal extends Goal { @@ -2995,10 +2956,10 @@ index a7575b5ef56af6f53448d391abb4956e130148ca..e752c83df50fb9b670ecea2abc95426c return false; } diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -index 29dfbcecfbb2560e6ecde997abd5224a16c08c94..a76b754305036bf9c6387e27b86ec1559b290774 100644 +index ed617223942b410fb6f799be7db2001909db67ed..f11eb6df9f095109378caaf0fd16575bfb2e4976 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -@@ -254,13 +254,22 @@ public class Bat extends AmbientCreature { +@@ -253,13 +253,22 @@ public class Bat extends AmbientCreature { } } @@ -3023,10 +2984,10 @@ index 29dfbcecfbb2560e6ecde997abd5224a16c08c94..a76b754305036bf9c6387e27b86ec155 @Override protected float getStandingEyeHeight(Pose pose, EntityDimensions dimensions) { diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index a3ad957a9131168656b8e30c82d762c77e96ae6e..c296862063d2dcaf5e2d03d316c49ae03ab7d625 100644 +index d54fc22639bb67a977c27585aac46e9d3dcafa6d..fb800bf3fc198c1aee9a8bdc8d33e5e76f6a8746 100644 --- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -@@ -282,9 +282,11 @@ public class Axolotl extends Animal implements LerpingModel, Bucketable { +@@ -284,9 +284,11 @@ public class Axolotl extends Animal implements LerpingModel, Bucketable { return true; } @@ -3039,10 +3000,10 @@ index a3ad957a9131168656b8e30c82d762c77e96ae6e..c296862063d2dcaf5e2d03d316c49ae0 this.level.getProfiler().pop(); this.level.getProfiler().push("axolotlActivityUpdate"); diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index cc5687f43f8ac99995667fdc53c5c0586f70f367..d5cd18c478bedaeed83de31d442d1a5b0f0f54cf 100644 +index 78f1082b0a3bad923c1e142d15bc7dad2ae5ff15..042e852cd440e62003b5e72d92728e2dc602f279 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -@@ -146,9 +146,11 @@ public class Goat extends Animal { +@@ -141,9 +141,11 @@ public class Goat extends Animal { return (Brain) super.getBrain(); // CraftBukkit - decompile error } @@ -3055,7 +3016,7 @@ index cc5687f43f8ac99995667fdc53c5c0586f70f367..d5cd18c478bedaeed83de31d442d1a5b this.level.getProfiler().pop(); this.level.getProfiler().push("goatActivityUpdate"); diff --git a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java -index 5170a3d87fa95eace2ec5e56ad4ebc4b25f9297c..7889c9832c6a1ac2afebe4e1030495b3ea52fc2b 100644 +index f7d29950644a5cf12da0d31246d9f5fcbcc201bb..e5b8bcfe0d69cc0deecdf54662d553f16550fd2a 100644 --- a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java +++ b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java @@ -242,10 +242,16 @@ public class ItemEntity extends Entity { @@ -3076,10 +3037,10 @@ index 5170a3d87fa95eace2ec5e56ad4ebc4b25f9297c..7889c9832c6a1ac2afebe4e1030495b3 // Paper End this.tryToMerge(entityitem); 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 d47002d45dabd66f38d25d398d8943f4b911cdc5..5e207a3ea30ead2749c1121e2df8da53c8ebfdd7 100644 +index 4920f5465298b4da33b53f80b8af6220cb0e8ccc..987b7d1924a9caa710fc350012533e56a378646b 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -318,11 +318,17 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -317,11 +317,17 @@ public class EnderMan extends Monster implements NeutralMob { private boolean teleport(double x, double y, double z) { BlockPos.MutableBlockPos blockposition_mutableblockposition = new BlockPos.MutableBlockPos(x, y, z); @@ -3097,7 +3058,7 @@ index d47002d45dabd66f38d25d398d8943f4b911cdc5..5e207a3ea30ead2749c1121e2df8da53 - BlockState iblockdata = this.level.getBlockState(blockposition_mutableblockposition); + BlockState iblockdata = chunk.getBlockState(blockposition_mutableblockposition); // Pufferfish boolean flag = iblockdata.getMaterial().blocksMotion(); - boolean flag1 = iblockdata.getFluidState().is((Tag) FluidTags.WATER); + boolean flag1 = iblockdata.getFluidState().is(FluidTags.WATER); diff --git a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java index 373ec915412899e4893aa182abd6fb63f3dff0aa..fc43b1d5dcb53456bb24ae46ea08b97b14403c86 100644 @@ -3132,10 +3093,10 @@ index f65d32245556e2acab927a29626749edea980f0a..16116a4f907ff691646a3e98dd8e25e0 this.level.getProfiler().pop(); PiglinAi.updateActivity(this); 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 ea612b3c3ed7305b504d65eb6d38ed99547fd488..7d6bc3c253a77adfc7c35383caadb37154dc5c0f 100644 +index 268524e256a034520438d5c825e5e419d72d29ce..63903bd02c6f31d3190a20d106997d4f7b777df8 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -138,6 +138,8 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -140,6 +140,8 @@ public class Villager extends AbstractVillager implements ReputationEventHandler return villageplacetype == PoiType.MEETING; }); @@ -3144,7 +3105,7 @@ index ea612b3c3ed7305b504d65eb6d38ed99547fd488..7d6bc3c253a77adfc7c35383caadb371 public Villager(EntityType entityType, Level world) { this(entityType, world, VillagerType.PLAINS); } -@@ -241,11 +243,17 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -243,11 +245,17 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } // Spigot End @@ -3164,10 +3125,10 @@ index ea612b3c3ed7305b504d65eb6d38ed99547fd488..7d6bc3c253a77adfc7c35383caadb371 if (this.assignProfessionWhenSpawned) { this.assignProfessionWhenSpawned = false; diff --git a/src/main/java/net/minecraft/world/entity/player/Inventory.java b/src/main/java/net/minecraft/world/entity/player/Inventory.java -index c7e16e96633e17b951f0681599c5b3efc3ce1e6c..15dc5e9f426f78af0f3f92435a641a89ef2f134c 100644 +index b770e7840b00b46a127ae05cc872a21f7a2dffad..772200b9efe232cb407e460f2353a156c1a92c89 100644 --- a/src/main/java/net/minecraft/world/entity/player/Inventory.java +++ b/src/main/java/net/minecraft/world/entity/player/Inventory.java -@@ -688,6 +688,8 @@ public class Inventory implements Container, Nameable { +@@ -682,6 +682,8 @@ public class Inventory implements Container, Nameable { } public boolean contains(ItemStack stack) { @@ -3176,7 +3137,7 @@ index c7e16e96633e17b951f0681599c5b3efc3ce1e6c..15dc5e9f426f78af0f3f92435a641a89 Iterator iterator = this.compartments.iterator(); while (iterator.hasNext()) { -@@ -702,6 +704,18 @@ public class Inventory implements Container, Nameable { +@@ -696,6 +698,18 @@ public class Inventory implements Container, Nameable { } } } @@ -3353,7 +3314,7 @@ index d1eefa6ef3e9abfe7af4d8310aa64465fa2d5463..0f4aa330e5b179bb706a31917c671f16 default BlockHitResult clip(ClipContext raytrace1, BlockPos blockposition) { // Paper start - Prevent raytrace from loading chunks diff --git a/src/main/java/net/minecraft/world/level/GameRules.java b/src/main/java/net/minecraft/world/level/GameRules.java -index e7ca5d6fb8922e7e8065864f736b06056be080a0..6c9e574851b518242dbbee9bce954b44dbaeecb6 100644 +index 798afc145c54306fcf0838d8daef2bdf17763da9..e67d5012bc7af629d05bceb1b1e22162272e17aa 100644 --- a/src/main/java/net/minecraft/world/level/GameRules.java +++ b/src/main/java/net/minecraft/world/level/GameRules.java @@ -90,6 +90,7 @@ public class GameRules { @@ -3413,10 +3374,10 @@ index e7ca5d6fb8922e7e8065864f736b06056be080a0..6c9e574851b518242dbbee9bce954b44 final String id; private final GameRules.Category category; diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 11e146241a01ab9ec206b9d3f39aebf5c201a16e..9f2a16d32a93a0bcbdfb2f3734cd9ee5c8d57c52 100644 +index 160c0f37aa3aaf7598f852acf9bd444f79444c97..d1521394eaf38ab4e3ee55452149458911a3030b 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -305,6 +305,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -259,6 +259,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } // Paper end - optimise checkDespawn @@ -3429,24 +3390,24 @@ index 11e146241a01ab9ec206b9d3f39aebf5c201a16e..9f2a16d32a93a0bcbdfb2f3734cd9ee5 + @Override public final int getHeight() { return this.height; } + // Pufferfish end + - protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, final DimensionType dimensionmanager, Supplier supplier, boolean flag, boolean flag1, long i, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.concurrent.Executor executor) { // Paper - Async-Anti-Xray - Pass executor - this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot - this.paperConfig = new com.destroystokyo.paper.PaperWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName(), this.spigotConfig); // Paper -@@ -322,6 +331,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable { - this.profiler = supplier; + public abstract ResourceKey getTypeKey(); + + protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, Holder holder, Supplier supplier, boolean flag, boolean flag1, long i, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.concurrent.Executor executor) { // Paper - Async-Anti-Xray - Pass executor +@@ -279,6 +288,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable { this.levelData = worlddatamutable; - this.dimensionType = dimensionmanager; + this.dimensionTypeRegistration = holder; + this.dimensionType = (DimensionType) holder.value(); + // Pufferfish start -+ this.minBuildHeight = dimensionmanager.minY(); ++ this.minBuildHeight = this.dimensionType.minY(); + this.minSection = SectionPos.blockToSectionCoord(this.minBuildHeight); -+ this.height = dimensionmanager.height(); ++ this.height = this.dimensionType.height(); + this.maxBuildHeight = this.minBuildHeight + this.height; + this.maxSection = SectionPos.blockToSectionCoord(this.maxBuildHeight - 1) + 1; + // Pufferfish end this.dimension = resourcekey; this.isClientSide = flag; - if (dimensionmanager.coordinateScale() != 1.0D) { -@@ -437,6 +453,91 @@ public abstract class Level implements LevelAccessor, AutoCloseable { + if (this.dimensionType.coordinateScale() != 1.0D) { +@@ -394,6 +410,91 @@ public abstract class Level implements LevelAccessor, AutoCloseable { return null; } @@ -3538,7 +3499,7 @@ index 11e146241a01ab9ec206b9d3f39aebf5c201a16e..9f2a16d32a93a0bcbdfb2f3734cd9ee5 public boolean isInWorldBounds(BlockPos pos) { return pos.isInsideBuildHeightAndWorldBoundsHorizontal(this); // Paper - use better/optimized check } -@@ -978,13 +1079,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -935,13 +1036,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable { try { tickConsumer.accept(entity); MinecraftServer.getServer().executeMidTickTasks(); // Paper - execute chunk tasks mid tick @@ -3554,7 +3515,7 @@ index 11e146241a01ab9ec206b9d3f39aebf5c201a16e..9f2a16d32a93a0bcbdfb2f3734cd9ee5 // Paper end } } -@@ -1446,6 +1547,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1405,6 +1506,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } public ProfilerFiller getProfiler() { @@ -3563,11 +3524,11 @@ index 11e146241a01ab9ec206b9d3f39aebf5c201a16e..9f2a16d32a93a0bcbdfb2f3734cd9ee5 } diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -index 515e58e3db223fbdc01ca87607aca234c7010d51..f71f8b5c95849a6fb0367d7b027300cb2559b9e8 100644 +index 13eded53a64d0f36f8c9bce2077de4f1c1ed2d56..303ad9eab2e0a9b73597ca4ee9d70bea1979c5dd 100644 --- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java +++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -@@ -408,12 +408,12 @@ public final class NaturalSpawner { - return spawnGroup == MobCategory.MONSTER && world.getBlockState(pos.below()).is(Blocks.NETHER_BRICKS) && structureAccessor.getStructureAt(pos, StructureFeature.NETHER_BRIDGE).isValid(); +@@ -414,12 +414,12 @@ public final class NaturalSpawner { + } } - private static BlockPos getRandomPosWithin(Level world, LevelChunk chunk) { @@ -3584,10 +3545,10 @@ index 515e58e3db223fbdc01ca87607aca234c7010d51..f71f8b5c95849a6fb0367d7b027300cb return new BlockPos(i, l, j); } diff --git a/src/main/java/net/minecraft/world/level/biome/Biome.java b/src/main/java/net/minecraft/world/level/biome/Biome.java -index fa4544541b9c5f163b633596e73a5197cd081eb8..0e993320f56fa08fa346833620ad0b3bc2fc772b 100644 +index 0422d787593cc65aadcae9f7517ec67a52f1f72b..74b446bde17ff023fb19c422d15993fb1f4b3d69 100644 --- a/src/main/java/net/minecraft/world/level/biome/Biome.java +++ b/src/main/java/net/minecraft/world/level/biome/Biome.java -@@ -80,14 +80,20 @@ public final class Biome { +@@ -52,14 +52,20 @@ public final class Biome { private final MobSpawnSettings mobSettings; private final Biome.BiomeCategory biomeCategory; private final BiomeSpecialEffects specialEffects; @@ -3609,7 +3570,7 @@ index fa4544541b9c5f163b633596e73a5197cd081eb8..0e993320f56fa08fa346833620ad0b3b }); }); -@@ -129,17 +135,15 @@ public final class Biome { +@@ -101,17 +107,15 @@ public final class Biome { @Deprecated public float getTemperature(BlockPos blockPos) { long l = blockPos.asLong(); @@ -3711,7 +3672,7 @@ index e56f7d76b501dab7d549efd2fafd514a9625c24e..066f43deb5df6f79428eb0f325c2abfb @Override diff --git a/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java -index a19642740f42ee8c683ed7a86f6edd2bc887b6dd..14d5c4c62e5b9cac1c16af8e259f6a8ff3d8bbbf 100644 +index d241b25acc223982109495542fd17e0fbdf53437..9cc130087dfda6639def3b5bfd347c59602da3f3 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java @@ -44,7 +44,10 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen @@ -3845,7 +3806,7 @@ index ed3518fe7c841d9e1a9c97626acaa3d765a6d76f..da00f75ccc9f8c2e2174d4450479202a @Override diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index b47c4c9e9b82030cd82d72fe90d7c8bf558d6b28..087be9acfa77d3fd0216e5983aa62149e668cfc7 100644 +index d4ce71d98c5071cd3567c772a0853ca86550bad5..5d91f00e81864a981ca457fc4fa88f01dbc67a47 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java @@ -94,6 +94,18 @@ public class LevelChunk extends ChunkAccess { @@ -3876,20 +3837,20 @@ index b47c4c9e9b82030cd82d72fe90d7c8bf558d6b28..087be9acfa77d3fd0216e5983aa62149 public org.bukkit.Chunk bukkitChunk; diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunkSection.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunkSection.java -index e962db693510dc261d6456706a459929369f2510..16874e3c7c8e2577f3661cb3a459c63ea061b2d8 100644 +index b11ad90c0956ac1b8ee069fa3f4553a2b4ce88e9..a32a90056acf37150b90f2941ce5b87b6ca8d162 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunkSection.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunkSection.java -@@ -25,6 +25,9 @@ public class LevelChunkSection { +@@ -26,6 +26,9 @@ public class LevelChunkSection { private short tickingFluidCount; public final PalettedContainer states; - private final PalettedContainer biomes; + private final PalettedContainer> biomes; + // Pufferfish start + public short fluidStateCount; + // Pufferfish end public final com.destroystokyo.paper.util.maplist.IBlockDataList tickingList = new com.destroystokyo.paper.util.maplist.IBlockDataList(); // Paper - public LevelChunkSection(int chunkPos, PalettedContainer blockStateContainer, PalettedContainer biomeContainer) { -@@ -195,6 +198,7 @@ public class LevelChunkSection { + public LevelChunkSection(int chunkPos, PalettedContainer blockStateContainer, PalettedContainer> biomeContainer) { +@@ -196,6 +199,7 @@ public class LevelChunkSection { if (!fluid.isEmpty()) { --this.tickingFluidCount; @@ -3897,7 +3858,7 @@ index e962db693510dc261d6456706a459929369f2510..16874e3c7c8e2577f3661cb3a459c63e } if (!state.isAir()) { -@@ -209,6 +213,7 @@ public class LevelChunkSection { +@@ -210,6 +214,7 @@ public class LevelChunkSection { if (!fluid1.isEmpty()) { ++this.tickingFluidCount; @@ -3905,9 +3866,9 @@ index e962db693510dc261d6456706a459929369f2510..16874e3c7c8e2577f3661cb3a459c63e } this.updateKnownBlockInfo(x | (z << 4) | (y << 8), iblockdata1, state); // Paper -@@ -260,6 +265,7 @@ public class LevelChunkSection { +@@ -258,6 +263,7 @@ public class LevelChunkSection { if (fluid.isRandomlyTicking()) { - this.tickingFluidCount = (short) (this.tickingFluidCount + 1); // Paper + this.tickingFluidCount = (short) (this.tickingFluidCount + 1); } + this.fluidStateCount++; // Pufferfish } @@ -3953,10 +3914,10 @@ index 3b13f6ea36a3bfecabe09221eb5c48dddab119db..563b6c47df0c5ae9efcb91fd53a065b1 @Override public T get(int id) { diff --git a/src/main/java/net/minecraft/world/level/material/FlowingFluid.java b/src/main/java/net/minecraft/world/level/material/FlowingFluid.java -index 6f5f9d8a38bf023969c883b3e3a230c3cdc62104..a02a5313db545a8694feec0e2504465426c39a6a 100644 +index ff40fe323964f173561a6838fb443e79abf9df38..c2c3ed6ba79f9f41497e042571f699a0fc6e9335 100644 --- a/src/main/java/net/minecraft/world/level/material/FlowingFluid.java +++ b/src/main/java/net/minecraft/world/level/material/FlowingFluid.java -@@ -44,6 +44,8 @@ public abstract class FlowingFluid extends Fluid { +@@ -43,6 +43,8 @@ public abstract class FlowingFluid extends Fluid { public static final BooleanProperty FALLING = BlockStateProperties.FALLING; public static final IntegerProperty LEVEL = BlockStateProperties.LEVEL_FLOWING; private static final int CACHE_SIZE = 200; @@ -3965,7 +3926,7 @@ index 6f5f9d8a38bf023969c883b3e3a230c3cdc62104..a02a5313db545a8694feec0e25044654 private static final ThreadLocal> OCCLUSION_CACHE = ThreadLocal.withInitial(() -> { Object2ByteLinkedOpenHashMap object2bytelinkedopenhashmap = new Object2ByteLinkedOpenHashMap(200) { protected void rehash(int i) {} -@@ -52,6 +54,14 @@ public abstract class FlowingFluid extends Fluid { +@@ -51,6 +53,14 @@ public abstract class FlowingFluid extends Fluid { object2bytelinkedopenhashmap.defaultReturnValue((byte) 127); return object2bytelinkedopenhashmap; }); @@ -3980,7 +3941,7 @@ index 6f5f9d8a38bf023969c883b3e3a230c3cdc62104..a02a5313db545a8694feec0e25044654 private final Map shapes = Maps.newIdentityHashMap(); public FlowingFluid() {} -@@ -240,6 +250,8 @@ public abstract class FlowingFluid extends Fluid { +@@ -239,6 +249,8 @@ public abstract class FlowingFluid extends Fluid { } private boolean canPassThroughWall(Direction face, BlockGetter world, BlockPos pos, BlockState state, BlockPos fromPos, BlockState fromState) { @@ -3989,7 +3950,7 @@ index 6f5f9d8a38bf023969c883b3e3a230c3cdc62104..a02a5313db545a8694feec0e25044654 Object2ByteLinkedOpenHashMap object2bytelinkedopenhashmap; if (!state.getBlock().hasDynamicShape() && !fromState.getBlock().hasDynamicShape()) { -@@ -247,9 +259,16 @@ public abstract class FlowingFluid extends Fluid { +@@ -246,9 +258,16 @@ public abstract class FlowingFluid extends Fluid { } else { object2bytelinkedopenhashmap = null; } @@ -4006,7 +3967,7 @@ index 6f5f9d8a38bf023969c883b3e3a230c3cdc62104..a02a5313db545a8694feec0e25044654 if (object2bytelinkedopenhashmap != null) { block_a = new Block.BlockStatePairKey(state, fromState, face); byte b0 = object2bytelinkedopenhashmap.getAndMoveToFirst(block_a); -@@ -260,11 +279,22 @@ public abstract class FlowingFluid extends Fluid { +@@ -259,11 +278,22 @@ public abstract class FlowingFluid extends Fluid { } else { block_a = null; } @@ -4029,7 +3990,7 @@ index 6f5f9d8a38bf023969c883b3e3a230c3cdc62104..a02a5313db545a8694feec0e25044654 if (object2bytelinkedopenhashmap != null) { if (object2bytelinkedopenhashmap.size() == 200) { object2bytelinkedopenhashmap.removeLastByte(); -@@ -272,6 +302,11 @@ public abstract class FlowingFluid extends Fluid { +@@ -271,6 +301,11 @@ public abstract class FlowingFluid extends Fluid { object2bytelinkedopenhashmap.putAndMoveToFirst(block_a, (byte) (flag ? 1 : 0)); } @@ -4059,10 +4020,10 @@ index 05b64f2730bfe836bd1d72dcfccd9f536908a099..d33af84300db18ea2b71dba2c9ed4339 public boolean hasParam(LootContextParam parameter) { diff --git a/src/main/java/net/minecraft/world/phys/shapes/EntityCollisionContext.java b/src/main/java/net/minecraft/world/phys/shapes/EntityCollisionContext.java -index e387de8adc480eac27b58b6f3f0d331ffc4382f1..6dba9d6bb7b81fe176cc0fabbb60b554282a9180 100644 +index b1992ed5136cc7dcf04219868b94b3c37ae36b4b..7d494a050d1dac79c7bae5a7464fccabfdc6066d 100644 --- a/src/main/java/net/minecraft/world/phys/shapes/EntityCollisionContext.java +++ b/src/main/java/net/minecraft/world/phys/shapes/EntityCollisionContext.java -@@ -21,47 +21,68 @@ public class EntityCollisionContext implements CollisionContext { +@@ -19,47 +19,68 @@ public class EntityCollisionContext implements CollisionContext { return defaultValue; } }; @@ -4071,12 +4032,12 @@ index e387de8adc480eac27b58b6f3f0d331ffc4382f1..6dba9d6bb7b81fe176cc0fabbb60b554 private final boolean descending; private final double entityBottom; private final ItemStack heldItem; - private final Predicate canStandOnFluid; -+ */ + private final Predicate canStandOnFluid; ++ */ @Nullable private final Entity entity; - protected EntityCollisionContext(boolean descending, double minY, ItemStack heldItem, Predicate walkOnFluidPredicate, @Nullable Entity entity) { + protected EntityCollisionContext(boolean descending, double minY, ItemStack heldItem, Predicate walkOnFluidPredicate, @Nullable Entity entity) { + /* this.descending = descending; this.entityBottom = minY; @@ -4090,7 +4051,7 @@ index e387de8adc480eac27b58b6f3f0d331ffc4382f1..6dba9d6bb7b81fe176cc0fabbb60b554 @Deprecated protected EntityCollisionContext(Entity entity) { + /* - this(entity.isDescending(), entity.getY(), entity instanceof LivingEntity ? ((LivingEntity)entity).getMainHandItem() : ItemStack.EMPTY, entity instanceof LivingEntity ? ((LivingEntity)entity)::canStandOnFluid : (fluid) -> { + this(entity.isDescending(), entity.getY(), entity instanceof LivingEntity ? ((LivingEntity)entity).getMainHandItem() : ItemStack.EMPTY, entity instanceof LivingEntity ? ((LivingEntity)entity)::canStandOnFluid : (fluidState) -> { return false; }, entity); + */ @@ -4111,12 +4072,12 @@ index e387de8adc480eac27b58b6f3f0d331ffc4382f1..6dba9d6bb7b81fe176cc0fabbb60b554 } @Override - public boolean canStandOnFluid(FluidState state, FlowingFluid fluid) { -- return this.canStandOnFluid.test(fluid) && !state.getType().isSame(fluid); + public boolean canStandOnFluid(FluidState state, FluidState fluidState) { +- return this.canStandOnFluid.test(fluidState) && !state.getType().isSame(fluidState.getType()); + // Pufferfish start + Entity entity = this.entity; + if (entity instanceof LivingEntity livingEntity) { -+ return livingEntity.canStandOnFluid(fluid) && !state.getType().isSame(fluid); ++ return livingEntity.canStandOnFluid(fluidState) && !state.getType().isSame(fluidState.getType()); + } + return false; + // Pufferfish end @@ -4136,10 +4097,10 @@ index e387de8adc480eac27b58b6f3f0d331ffc4382f1..6dba9d6bb7b81fe176cc0fabbb60b554 @Nullable diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 51f67a2944034552d57b939ef29e0249e74383b9..206754441b98e9386bb366d5ec57cffc0142fc94 100644 +index 5a6290e5d7b82dbc069d159ea53292e4dbc94d03..118b9aed39dfaa3780905bb38738ba8b131fc0e4 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -251,7 +251,7 @@ import javax.annotation.Nullable; // Paper +@@ -248,7 +248,7 @@ import javax.annotation.Nullable; // Paper import javax.annotation.Nonnull; // Paper public final class CraftServer implements Server { @@ -4148,7 +4109,7 @@ index 51f67a2944034552d57b939ef29e0249e74383b9..206754441b98e9386bb366d5ec57cffc private final String serverVersion; private final String bukkitVersion = Versioning.getBukkitVersion(); private final Logger logger = Logger.getLogger("Minecraft"); -@@ -1045,6 +1045,11 @@ public final class CraftServer implements Server { +@@ -1042,6 +1042,11 @@ public final class CraftServer implements Server { plugin.getDescription().getName(), "This plugin is not properly shutting down its async tasks when it is being shut down. This task may throw errors during the final shutdown logs and might not complete before process dies." )); @@ -4210,7 +4171,7 @@ index 909b2c98e7a9117d2f737245e4661792ffafb744..0d9e2b3728f9ab500bd5e44702718535 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -index 4be7b18b4e794734439d1e8bec4304d88328c91e..98d396658bd7547e6b6f850529cab216e83c6c62 100644 +index d8f4d351a66c6d1e60e1a470ce64f538c7718232..d5d9f5d16a0972c2dac84f713dee940d21c56865 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java @@ -421,7 +421,7 @@ public final class CraftMagicNumbers implements UnsafeValues { diff --git a/patches/server/0002-Rebrand.patch b/patches/server/0002-Rebrand.patch index 83f706e4a..94e5a7036 100644 --- a/patches/server/0002-Rebrand.patch +++ b/patches/server/0002-Rebrand.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Rebrand diff --git a/build.gradle.kts b/build.gradle.kts -index a37ca23682272d5ddaf1a2246917e6c46b69da86..52047b799fe241ba8501511899a7ff8e5cbe9925 100644 +index 27c18ced1ce6d38c9cd05eb4269f25a9d6520030..58948319c004d89a90052d061f9c9293375b9c88 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -18,7 +18,7 @@ repositories { @@ -152,7 +152,7 @@ index e0b1f0671d16ddddcb6725acd25a1d1d69e42701..8c3c68465197fafc14849dc38a572e30 .completer(new ConsoleCommandCompleter(this.server)) .option(LineReader.Option.COMPLETE_IN_WORD, true); diff --git a/src/main/java/net/minecraft/CrashReport.java b/src/main/java/net/minecraft/CrashReport.java -index cc0576e8e5e1dc77c22856f0f9c4376b6bf36677..6654c5a547cb49bce98d6b0feed9a245c1a5ce7c 100644 +index 1a859fef0848cf23a672012e9764965ae1c07ec5..14ed740609b14242c2a8d377a78b2f719cd8a422 100644 --- a/src/main/java/net/minecraft/CrashReport.java +++ b/src/main/java/net/minecraft/CrashReport.java @@ -121,6 +121,10 @@ public class CrashReport { @@ -167,10 +167,10 @@ index cc0576e8e5e1dc77c22856f0f9c4376b6bf36677..6654c5a547cb49bce98d6b0feed9a245 stringbuilder.append(CrashReport.getErrorComment()); stringbuilder.append("\n\n"); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 505e37b45c2712bb42cd834b527e8ddb0eae1236..af0b14099ee1470254004c048f1ea39c11e9e1b9 100644 +index b53fa61dc542937641c36d90c6613e072a05ec5f..2f24119ed147b7952f671dbac21d05cf38960cc0 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1030,7 +1030,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { Map> map = new HashMap<>(); diff --git a/src/main/java/net/minecraft/commands/CommandSourceStack.java b/src/main/java/net/minecraft/commands/CommandSourceStack.java -index 098182d2426a25cef0bc285356bc346db0af8172..c26435a6b5cdc61ae5d123dacea711a4a9f666d1 100644 +index 00bbf33aa44e2d5a4e755a2d7c1a60de9e36674f..9d884da26e6515a85b0a8f8f611fafc17c19debc 100644 --- a/src/main/java/net/minecraft/commands/CommandSourceStack.java +++ b/src/main/java/net/minecraft/commands/CommandSourceStack.java @@ -236,6 +236,30 @@ public class CommandSourceStack implements SharedSuggestionProvider, com.destroy @@ -45,7 +45,7 @@ index 098182d2426a25cef0bc285356bc346db0af8172..c26435a6b5cdc61ae5d123dacea711a4 + if (message == null) { + return; + } -+ sendSuccess(net.kyori.adventure.text.minimessage.MiniMessage.get().parse(message), broadcastToOps); ++ sendSuccess(net.kyori.adventure.text.minimessage.MiniMessage.miniMessage().deserialize(message), broadcastToOps); + } + + public void sendSuccess(@Nullable net.kyori.adventure.text.Component message) { @@ -64,10 +64,10 @@ index 098182d2426a25cef0bc285356bc346db0af8172..c26435a6b5cdc61ae5d123dacea711a4 if (this.source.acceptsSuccess() && !this.silent) { this.source.sendMessage(message, Util.NIL_UUID); diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 9c31e5d653f2027cf5b028f9fb9268f1469cb1e0..d58e5357f9cb45d9b5ddeaed4ec76aa388fc34d1 100644 +index 1ea4178976e1583b6b0f71b26d00c024bc2ef49c..0df8172bc3a5621c2d23b036ce2e5879650757b5 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -@@ -228,6 +228,15 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface +@@ -231,6 +231,15 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface } thread.start(); // Paper - start console thread after MinecraftServer.console & PaperConfig are initialized com.destroystokyo.paper.PaperConfig.registerCommands(); @@ -84,10 +84,10 @@ index 9c31e5d653f2027cf5b028f9fb9268f1469cb1e0..d58e5357f9cb45d9b5ddeaed4ec76aa3 io.papermc.paper.util.ObfHelper.INSTANCE.getClass(); // load mappings for stacktrace deobf and etc. io.papermc.paper.brigadier.PaperBrigadierProviderImpl.INSTANCE.getClass(); // init PaperBrigadierProvider diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 9f2a16d32a93a0bcbdfb2f3734cd9ee5c8d57c52..d6e0d375c272bf2503872fe19a1d62dd58584c6f 100644 +index d1521394eaf38ab4e3ee55452149458911a3030b..5c69a8914ce87f1a19c4a86c7d7a8a15df78a270 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -166,6 +166,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -164,6 +164,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable { public final com.destroystokyo.paper.PaperWorldConfig paperConfig; // Paper public final com.destroystokyo.paper.antixray.ChunkPacketBlockController chunkPacketBlockController; // Paper - Anti-Xray @@ -96,8 +96,8 @@ index 9f2a16d32a93a0bcbdfb2f3734cd9ee5c8d57c52..d6e0d375c272bf2503872fe19a1d62dd public final co.aikar.timings.WorldTimingsHandler timings; // Paper public static BlockPos lastPhysicsProblem; // Spigot private org.spigotmc.TickLimiter entityLimiter; -@@ -317,6 +319,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { - protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, final DimensionType dimensionmanager, Supplier supplier, boolean flag, boolean flag1, long i, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.concurrent.Executor executor) { // Paper - Async-Anti-Xray - Pass executor +@@ -273,6 +275,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { + protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, Holder holder, Supplier supplier, boolean flag, boolean flag1, long i, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.concurrent.Executor executor) { // Paper - Async-Anti-Xray - Pass executor this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot this.paperConfig = new com.destroystokyo.paper.PaperWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName(), this.spigotConfig); // Paper + this.purpurConfig = new org.purpurmc.purpur.PurpurWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName(), env); // Purpur @@ -105,10 +105,10 @@ index 9f2a16d32a93a0bcbdfb2f3734cd9ee5c8d57c52..d6e0d375c272bf2503872fe19a1d62dd this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 985a1f2daca6ea9328551f93a79200387bde92d3..73bac330af68212a1c2eef7056f1b56de6fa9f99 100644 +index 4bc37e48600d830a9cdc379428fcd82c9d9639d4..0b5a4e0d805558329fd95d8729690e05ee0db9b9 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -958,6 +958,7 @@ public final class CraftServer implements Server { +@@ -955,6 +955,7 @@ public final class CraftServer implements Server { org.spigotmc.SpigotConfig.init((File) console.options.valueOf("spigot-settings")); // Spigot com.destroystokyo.paper.PaperConfig.init((File) console.options.valueOf("paper-settings")); // Paper @@ -116,7 +116,7 @@ index 985a1f2daca6ea9328551f93a79200387bde92d3..73bac330af68212a1c2eef7056f1b56d for (ServerLevel world : this.console.getAllLevels()) { // world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters, config.spawnAnimals); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean)) -@@ -974,6 +975,7 @@ public final class CraftServer implements Server { +@@ -971,6 +972,7 @@ public final class CraftServer implements Server { } world.spigotConfig.init(); // Spigot world.paperConfig.init(); // Paper @@ -124,7 +124,7 @@ index 985a1f2daca6ea9328551f93a79200387bde92d3..73bac330af68212a1c2eef7056f1b56d } Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper -@@ -989,6 +991,7 @@ public final class CraftServer implements Server { +@@ -986,6 +988,7 @@ public final class CraftServer implements Server { this.reloadData(); org.spigotmc.SpigotConfig.registerCommands(); // Spigot com.destroystokyo.paper.PaperConfig.registerCommands(); // Paper @@ -132,7 +132,7 @@ index 985a1f2daca6ea9328551f93a79200387bde92d3..73bac330af68212a1c2eef7056f1b56d this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); -@@ -2703,6 +2706,18 @@ public final class CraftServer implements Server { +@@ -2679,6 +2682,18 @@ public final class CraftServer implements Server { return com.destroystokyo.paper.PaperConfig.config; } @@ -152,7 +152,7 @@ index 985a1f2daca6ea9328551f93a79200387bde92d3..73bac330af68212a1c2eef7056f1b56d public void restart() { org.spigotmc.RestartCommand.restart(); diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index f810bebfca3932c80e20646eb0680f7718506707..4e59c357343841a1f32061d26f465edde426fc8a 100644 +index afcc80d1f79d1743b0940c69858eacec88fec889..73f00d5ab5b3c3697b887bd160b42b1fc0ff9d79 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -153,6 +153,14 @@ public class Main { diff --git a/patches/server/0004-Purpur-client-support.patch b/patches/server/0004-Purpur-client-support.patch index c2d2a1209..ade417fb3 100644 --- a/patches/server/0004-Purpur-client-support.patch +++ b/patches/server/0004-Purpur-client-support.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Purpur client support diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 470dbed47830e2f580c090bc762a7be5cf389ce5..a261fd5f0709bd9891189d538f762aa8786d19d2 100644 +index e74c13e7aaa144fcd07036de70e80bebf0be698a..b3459253bddd74ecda2b534d4bd6877b079a467f 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -254,6 +254,7 @@ public class ServerPlayer extends Player { +@@ -252,6 +252,7 @@ public class ServerPlayer extends Player { public Integer clientViewDistance; // CraftBukkit end public PlayerNaturallySpawnCreaturesEvent playerNaturallySpawnedEvent; // Paper @@ -17,10 +17,10 @@ index 470dbed47830e2f580c090bc762a7be5cf389ce5..a261fd5f0709bd9891189d538f762aa8 public double lastEntitySpawnRadiusSquared; // Paper - optimise isOutsideRange, this field is in blocks public final com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet cachedSingleHashSet; // Paper diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index b9f2f6713bd9e3431ddbf2a41f16cbda5739ef57..f579bcfd222025ca9bc5b0f0f8b168d3e7385763 100644 +index bc67e1a997d59408b00c333184d9f8dcc6cb262a..353848667006bc386fe5d3fceb61ac58be20a941 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -3147,6 +3147,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -3164,6 +3164,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser private static final ResourceLocation CUSTOM_UNREGISTER = new ResourceLocation("unregister"); private static final ResourceLocation MINECRAFT_BRAND = new ResourceLocation("brand"); // Paper - Brand support @@ -28,7 +28,7 @@ index b9f2f6713bd9e3431ddbf2a41f16cbda5739ef57..f579bcfd222025ca9bc5b0f0f8b168d3 @Override public void handleCustomPayload(ServerboundCustomPayloadPacket packet) { -@@ -3171,6 +3172,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -3188,6 +3189,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser ServerGamePacketListenerImpl.LOGGER.error("Couldn\'t unregister custom payload", ex); this.disconnect("Invalid payload UNREGISTER!", org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PAYLOAD); // Paper - kick event cause } @@ -43,7 +43,7 @@ index b9f2f6713bd9e3431ddbf2a41f16cbda5739ef57..f579bcfd222025ca9bc5b0f0f8b168d3 try { byte[] data = new byte[packet.data.readableBytes()]; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index ef841a5ea1f634e87e5437faf83dc00efd590106..b35a09b635315cce408a86f7fb6dbad7911116ae 100644 +index 603e9234294c01f1cde4bfc0b0053e69b99861d9..57458fb9049518e568d22af7c53fa8074001361e 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -2714,4 +2714,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0005-Component-related-conveniences.patch b/patches/server/0005-Component-related-conveniences.patch index 081d4027d..a57315145 100644 --- a/patches/server/0005-Component-related-conveniences.patch +++ b/patches/server/0005-Component-related-conveniences.patch @@ -5,17 +5,17 @@ Subject: [PATCH] Component related conveniences diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index a261fd5f0709bd9891189d538f762aa8786d19d2..20548a1e7a4d56162ec906646cff3159fc98c817 100644 +index b3459253bddd74ecda2b534d4bd6877b079a467f..4da6ef8affbec3fe3311a5c6282daf7f41ddccbc 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1693,6 +1693,26 @@ public class ServerPlayer extends Player { +@@ -1691,6 +1691,26 @@ public class ServerPlayer extends Player { } // CraftBukkit end + // Purpur start + public void sendActionBarMessage(@Nullable String message) { + if (message != null) { -+ sendActionBarMessage(net.kyori.adventure.text.minimessage.MiniMessage.get().parse(message)); ++ sendActionBarMessage(net.kyori.adventure.text.minimessage.MiniMessage.miniMessage().deserialize(message)); + } + } + @@ -36,7 +36,7 @@ index a261fd5f0709bd9891189d538f762aa8786d19d2..20548a1e7a4d56162ec906646cff3159 public void displayClientMessage(Component message, boolean actionBar) { this.sendMessage(message, actionBar ? ChatType.GAME_INFO : ChatType.CHAT, Util.NIL_UUID); diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 7a0c1ba40156df69bbbf36d96bed0950130d2351..6b4cb3a94dc998e7a087c888876a15c36763bfd0 100644 +index f5852341161b0d632e22af9b3e625ca1e786bd63..b66821b421372a503ae2a4963e67a53d9a0cc537 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -1377,6 +1377,62 @@ public abstract class PlayerList { @@ -58,7 +58,7 @@ index 7a0c1ba40156df69bbbf36d96bed0950130d2351..6b4cb3a94dc998e7a087c888876a15c3 + + public void broadcast(@Nullable String message, ChatType type, UUID sender) { + if (message != null) { -+ broadcast(net.kyori.adventure.text.minimessage.MiniMessage.get().parse(message), type, sender); ++ broadcast(net.kyori.adventure.text.minimessage.MiniMessage.miniMessage().deserialize(message), type, sender); + } + } + @@ -103,7 +103,7 @@ index 7a0c1ba40156df69bbbf36d96bed0950130d2351..6b4cb3a94dc998e7a087c888876a15c3 this.server.sendMessage(message, sender); Iterator iterator = this.players.iterator(); diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSource.java b/src/main/java/net/minecraft/world/damagesource/DamageSource.java -index a828cad27fcd39f8bfbaefa97052a2a3b6650ee7..19d6165f266fcc39bc3533042109ef1b725ecb77 100644 +index a828cad27fcd39f8bfbaefa97052a2a3b6650ee7..67e559d63c543ff716d610cb04ff9426cc20ae00 100644 --- a/src/main/java/net/minecraft/world/damagesource/DamageSource.java +++ b/src/main/java/net/minecraft/world/damagesource/DamageSource.java @@ -234,6 +234,15 @@ public class DamageSource { @@ -113,8 +113,8 @@ index a828cad27fcd39f8bfbaefa97052a2a3b6650ee7..19d6165f266fcc39bc3533042109ef1b + // Purpur start + public Component getLocalizedDeathMessage(String str, LivingEntity entity) { + net.kyori.adventure.text.Component name = io.papermc.paper.adventure.PaperAdventure.asAdventure(entity.getDisplayName()); -+ net.kyori.adventure.text.minimessage.Template template = net.kyori.adventure.text.minimessage.Template.of("player", name); -+ net.kyori.adventure.text.Component component = net.kyori.adventure.text.minimessage.MiniMessage.get().parse(str, template); ++ net.kyori.adventure.text.minimessage.tag.resolver.TagResolver template = net.kyori.adventure.text.minimessage.tag.resolver.Placeholder.component("player", name); ++ net.kyori.adventure.text.Component component = net.kyori.adventure.text.minimessage.MiniMessage.miniMessage().deserialize(str, template); + return io.papermc.paper.adventure.PaperAdventure.asVanilla(component); + } + // Purpur end @@ -123,10 +123,10 @@ index a828cad27fcd39f8bfbaefa97052a2a3b6650ee7..19d6165f266fcc39bc3533042109ef1b return this.isFireSource; } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index fd6e42d3df429aaf753102258b8e65a61ff4d296..12357be999e5e0f684e24f6ea611f7cbfc29e986 100644 +index 59ec3d56e88cf6cee218422481457b944ff25998..8e7d8482f44799d2df6ebea380dc4ff47fd66c3d 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3661,6 +3661,34 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i +@@ -3696,6 +3696,34 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i return SlotAccess.NULL; } @@ -137,7 +137,7 @@ index fd6e42d3df429aaf753102258b8e65a61ff4d296..12357be999e5e0f684e24f6ea611f7cb + + public void sendMessage(@Nullable String message, UUID sender) { + if (org.apache.commons.lang3.StringUtils.isNotEmpty(message)) { -+ sendMessage(net.kyori.adventure.text.minimessage.MiniMessage.get().parse(message), sender); ++ sendMessage(net.kyori.adventure.text.minimessage.MiniMessage.miniMessage().deserialize(message), sender); + } + } + diff --git a/patches/server/0006-Ridables.patch b/patches/server/0006-Ridables.patch index 89ec88d5b..1cff2d4d4 100644 --- a/patches/server/0006-Ridables.patch +++ b/patches/server/0006-Ridables.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Ridables diff --git a/src/main/java/net/minecraft/core/BlockPos.java b/src/main/java/net/minecraft/core/BlockPos.java -index 14610e6144ec144ebbec6fb0945c67bb0ea86795..6833eb5dc7aa64bef1b3b38de5e282bdf1e10ec7 100644 +index 8c79f66abd42e9c9875e8877c6dd82b5e3cfa184..2841469748bc308f690aaeb34fe05cb25f36a33d 100644 --- a/src/main/java/net/minecraft/core/BlockPos.java +++ b/src/main/java/net/minecraft/core/BlockPos.java @@ -41,6 +41,12 @@ public class BlockPos extends Vec3i { @@ -22,10 +22,10 @@ index 14610e6144ec144ebbec6fb0945c67bb0ea86795..6833eb5dc7aa64bef1b3b38de5e282bd super(x, y, z); } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index af0b14099ee1470254004c048f1ea39c11e9e1b9..8a1f04cbff753fe1e9314cb5895c88c772cf2e5c 100644 +index 2f24119ed147b7952f671dbac21d05cf38960cc0..0fec369bd64aeebebf5702a15090982b32dcd7a7 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1599,6 +1599,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper worldserver.hasEntityMoveEvent = io.papermc.paper.event.entity.EntityMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Paper @@ -34,10 +34,10 @@ index af0b14099ee1470254004c048f1ea39c11e9e1b9..8a1f04cbff753fe1e9314cb5895c88c7 this.profiler.push(() -> { diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 58604c77d9273c866e53f8ee62c7056acc76e004..45962bdb5d99d0c60898d848371cecf50c211ce0 100644 +index a154761eecb4911f8b646cccbb9b713e0fcc693e..291ec6d665daf222150f05ccdf759b8166a718a9 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -211,6 +211,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -212,6 +212,7 @@ public class ServerLevel extends Level implements WorldGenLevel { public final UUID uuid; public boolean hasPhysicsEvent = true; // Paper public boolean hasEntityMoveEvent = false; // Paper @@ -46,10 +46,10 @@ index 58604c77d9273c866e53f8ee62c7056acc76e004..45962bdb5d99d0c60898d848371cecf5 return new Throwable(entity + " Added to world at " + new java.util.Date()); } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 20548a1e7a4d56162ec906646cff3159fc98c817..652f7207edb51e2523caaced2bc8bdd98f884ecf 100644 +index 4da6ef8affbec3fe3311a5c6282daf7f41ddccbc..2ec7392b94e6351190a72e59fac49a883a058752 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -662,6 +662,15 @@ public class ServerPlayer extends Player { +@@ -660,6 +660,15 @@ public class ServerPlayer extends Player { this.trackStartFallingPosition(); this.trackEnteredOrExitedLavaOnVehicle(); this.advancements.flushDirty(this); @@ -65,18 +65,11 @@ index 20548a1e7a4d56162ec906646cff3159fc98c817..652f7207edb51e2523caaced2bc8bdd9 } public void doTick() { -@@ -2458,4 +2467,6 @@ public class ServerPlayer extends Player { - return (CraftPlayer) super.getBukkitEntity(); - } - // CraftBukkit end -+ -+ - } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index f579bcfd222025ca9bc5b0f0f8b168d3e7385763..392468375ef80b8c22bf94e336ec96d47177adac 100644 +index 353848667006bc386fe5d3fceb61ac58be20a941..d61e30e19c1144a3610f92028c047e0f11a13aa9 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2458,6 +2458,8 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -2466,6 +2466,8 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser ServerGamePacketListenerImpl.this.cserver.getPluginManager().callEvent(event); @@ -86,10 +79,10 @@ index f579bcfd222025ca9bc5b0f0f8b168d3e7385763..392468375ef80b8c22bf94e336ec96d4 if ((entity instanceof Bucketable && entity instanceof LivingEntity && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) { ServerGamePacketListenerImpl.this.send(new ClientboundAddMobPacket((LivingEntity) entity)); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 12357be999e5e0f684e24f6ea611f7cbfc29e986..2885911f5b82ad7ecb1ebea70251804bfc836203 100644 +index 8e7d8482f44799d2df6ebea380dc4ff47fd66c3d..b630e2a4decc750474f4c9dc6669ecb420a9ceaf 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -297,7 +297,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i +@@ -300,7 +300,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i private final Set tags; private final double[] pistonDeltas; private long pistonDeltasGameTime; @@ -98,7 +91,7 @@ index 12357be999e5e0f684e24f6ea611f7cbfc29e986..2885911f5b82ad7ecb1ebea70251804b private float eyeHeight; public boolean isInPowderSnow; public boolean wasInPowderSnow; -@@ -2664,6 +2664,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i +@@ -2686,6 +2686,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i this.passengers = ImmutableList.copyOf(list); } @@ -111,7 +104,7 @@ index 12357be999e5e0f684e24f6ea611f7cbfc29e986..2885911f5b82ad7ecb1ebea70251804b } return true; // CraftBukkit } -@@ -2704,6 +2710,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i +@@ -2726,6 +2732,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i return false; } // Spigot end @@ -126,7 +119,7 @@ index 12357be999e5e0f684e24f6ea611f7cbfc29e986..2885911f5b82ad7ecb1ebea70251804b if (this.passengers.size() == 1 && this.passengers.get(0) == entity) { this.passengers = ImmutableList.of(); } else { -@@ -4393,4 +4407,45 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i +@@ -4432,4 +4446,45 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i return ((ServerChunkCache) level.getChunkSource()).isPositionTicking(this); } // Paper end @@ -173,7 +166,7 @@ index 12357be999e5e0f684e24f6ea611f7cbfc29e986..2885911f5b82ad7ecb1ebea70251804b + // Purpur end } diff --git a/src/main/java/net/minecraft/world/entity/GlowSquid.java b/src/main/java/net/minecraft/world/entity/GlowSquid.java -index 645c1dc9bd09b135a641759c76ce8d957b9bd488..912767ed261e44c0192c5a07e2c2026110988816 100644 +index e82a9d41a0710c0bd8a3fa2f8ee1704f7e1e56df..2ce9b08535cf3783e6823de3489433003a1aae0d 100644 --- a/src/main/java/net/minecraft/world/entity/GlowSquid.java +++ b/src/main/java/net/minecraft/world/entity/GlowSquid.java @@ -23,6 +23,23 @@ public class GlowSquid extends Squid { @@ -201,10 +194,10 @@ index 645c1dc9bd09b135a641759c76ce8d957b9bd488..912767ed261e44c0192c5a07e2c20261 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 6f98681ac54f575be047867a8c0b58e1dbd2a37d..eb9830104fb1c46ccce7b0f5e7c6ab66ecb6c809 100644 +index 6a31e29bce673e698922da3c3ba8fd4d8b0adedb..69d14a128cbd4bcfc36b3a3b6acfbf4168ffbb79 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -216,9 +216,9 @@ public abstract class LivingEntity extends Entity { +@@ -219,9 +219,9 @@ public abstract class LivingEntity extends Entity { protected int deathScore; public float lastHurt; public boolean jumping; @@ -217,7 +210,7 @@ index 6f98681ac54f575be047867a8c0b58e1dbd2a37d..eb9830104fb1c46ccce7b0f5e7c6ab66 protected int lerpSteps; protected double lerpX; protected double lerpY; -@@ -282,7 +282,7 @@ public abstract class LivingEntity extends Entity { +@@ -285,7 +285,7 @@ public abstract class LivingEntity extends Entity { this.effectsDirty = true; this.useItem = ItemStack.EMPTY; this.lastClimbablePos = Optional.empty(); @@ -226,7 +219,7 @@ index 6f98681ac54f575be047867a8c0b58e1dbd2a37d..eb9830104fb1c46ccce7b0f5e7c6ab66 this.craftAttributes = new CraftAttributeMap(this.attributes); // CraftBukkit // CraftBukkit - setHealth(getMaxHealth()) inlined and simplified to skip the instanceof check for EntityPlayer, as getBukkitEntity() is not initialized in constructor this.entityData.set(LivingEntity.DATA_HEALTH_ID, (float) this.getAttribute(Attributes.MAX_HEALTH).getValue()); -@@ -333,6 +333,7 @@ public abstract class LivingEntity extends Entity { +@@ -336,6 +336,7 @@ public abstract class LivingEntity extends Entity { public static AttributeSupplier.Builder createLivingAttributes() { return AttributeSupplier.builder().add(Attributes.MAX_HEALTH).add(Attributes.KNOCKBACK_RESISTANCE).add(Attributes.MOVEMENT_SPEED).add(Attributes.ARMOR).add(Attributes.ARMOR_TOUGHNESS); } @@ -234,7 +227,7 @@ index 6f98681ac54f575be047867a8c0b58e1dbd2a37d..eb9830104fb1c46ccce7b0f5e7c6ab66 @Override protected void checkFallDamage(double heightDifference, boolean onGround, BlockState landedState, BlockPos landedPosition) { -@@ -2613,7 +2614,7 @@ public abstract class LivingEntity extends Entity { +@@ -2616,7 +2617,7 @@ public abstract class LivingEntity extends Entity { } protected long lastJumpTime = 0L; // Paper @@ -243,7 +236,7 @@ index 6f98681ac54f575be047867a8c0b58e1dbd2a37d..eb9830104fb1c46ccce7b0f5e7c6ab66 double d0 = (double) this.getJumpPower() + this.getJumpBoostPower(); Vec3 vec3d = this.getDeltaMovement(); // Paper start -@@ -3355,8 +3356,10 @@ public abstract class LivingEntity extends Entity { +@@ -3358,8 +3359,10 @@ public abstract class LivingEntity extends Entity { this.pushEntities(); this.level.getProfiler().pop(); // Paper start @@ -256,7 +249,7 @@ index 6f98681ac54f575be047867a8c0b58e1dbd2a37d..eb9830104fb1c46ccce7b0f5e7c6ab66 Location from = new Location(this.level.getWorld(), this.xo, this.yo, this.zo, this.yRotO, this.xRotO); Location to = new Location (this.level.getWorld(), this.getX(), this.getY(), this.getZ(), this.getYRot(), this.getXRot()); io.papermc.paper.event.entity.EntityMoveEvent event = new io.papermc.paper.event.entity.EntityMoveEvent(this.getBukkitLivingEntity(), from, to.clone()); -@@ -3366,6 +3369,21 @@ public abstract class LivingEntity extends Entity { +@@ -3369,6 +3372,21 @@ public abstract class LivingEntity extends Entity { absMoveTo(event.getTo().getX(), event.getTo().getY(), event.getTo().getZ(), event.getTo().getYaw(), event.getTo().getPitch()); } } @@ -279,7 +272,7 @@ index 6f98681ac54f575be047867a8c0b58e1dbd2a37d..eb9830104fb1c46ccce7b0f5e7c6ab66 // Paper end if (!this.level.isClientSide && this.isSensitiveToWater() && this.isInWaterRainOrBubble()) { diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 73af374f4aa9e3e8f188434c21a5f1433cffc637..9956c5c69ee967c3cfab76d1dc31c9454ec61036 100644 +index d7a0fb4727e263932846a67c584da2c8d6d4e275..53c1be16f8efaff4cd66b3c558389bdafcd2ddb0 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -141,8 +141,8 @@ public abstract class Mob extends LivingEntity { @@ -356,7 +349,7 @@ index 73af374f4aa9e3e8f188434c21a5f1433cffc637..9956c5c69ee967c3cfab76d1dc31c945 + // Purpur end } diff --git a/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java b/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java -index 52ddf38d5a1894a248e142c6b9ebaff5cc921e5b..4fa1e8dd7ebc839527eed7f7db5af2c56c38f230 100644 +index 9bce290eb0c2cfef4896a3f2076c80bf3d76bd56..ddaa0050ef78597072634a212d845e1817497fe5 100644 --- a/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java +++ b/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java @@ -23,14 +23,21 @@ public class AttributeMap { @@ -392,13 +385,13 @@ index 52ddf38d5a1894a248e142c6b9ebaff5cc921e5b..4fa1e8dd7ebc839527eed7f7db5af2c5 } diff --git a/src/main/java/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java b/src/main/java/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java -index 6a4a0ba0f8f96dd8566b3164bbbceeaa37b548f1..65d0b0e7856eaa61e26b0af750bb7959f5a225f7 100644 +index 8e93595515aed7fb69a065ffd97d34d3083f5e52..8ad5fecd7bcc6737b0f90f32e9d67e489a02ef03 100644 --- a/src/main/java/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java +++ b/src/main/java/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java -@@ -74,7 +74,86 @@ import org.apache.logging.log4j.Logger; +@@ -74,7 +74,86 @@ import org.slf4j.Logger; public class DefaultAttributes { - private static final Logger LOGGER = LogManager.getLogger(); + private static final Logger LOGGER = LogUtils.getLogger(); - private static final Map, AttributeSupplier> SUPPLIERS = ImmutableMap., AttributeSupplier>builder().put(EntityType.ARMOR_STAND, LivingEntity.createLivingAttributes().build()).put(EntityType.AXOLOTL, Axolotl.createAttributes().build()).put(EntityType.BAT, Bat.createAttributes().build()).put(EntityType.BEE, Bee.createAttributes().build()).put(EntityType.BLAZE, Blaze.createAttributes().build()).put(EntityType.CAT, Cat.createAttributes().build()).put(EntityType.CAVE_SPIDER, CaveSpider.createCaveSpider().build()).put(EntityType.CHICKEN, Chicken.createAttributes().build()).put(EntityType.COD, AbstractFish.createAttributes().build()).put(EntityType.COW, Cow.createAttributes().build()).put(EntityType.CREEPER, Creeper.createAttributes().build()).put(EntityType.DOLPHIN, Dolphin.createAttributes().build()).put(EntityType.DONKEY, AbstractChestedHorse.createBaseChestedHorseAttributes().build()).put(EntityType.DROWNED, Zombie.createAttributes().build()).put(EntityType.ELDER_GUARDIAN, ElderGuardian.createAttributes().build()).put(EntityType.ENDERMAN, EnderMan.createAttributes().build()).put(EntityType.ENDERMITE, Endermite.createAttributes().build()).put(EntityType.ENDER_DRAGON, EnderDragon.createAttributes().build()).put(EntityType.EVOKER, Evoker.createAttributes().build()).put(EntityType.FOX, Fox.createAttributes().build()).put(EntityType.GHAST, Ghast.createAttributes().build()).put(EntityType.GIANT, Giant.createAttributes().build()).put(EntityType.GLOW_SQUID, GlowSquid.createAttributes().build()).put(EntityType.GOAT, Goat.createAttributes().build()).put(EntityType.GUARDIAN, Guardian.createAttributes().build()).put(EntityType.HOGLIN, Hoglin.createAttributes().build()).put(EntityType.HORSE, AbstractHorse.createBaseHorseAttributes().build()).put(EntityType.HUSK, Zombie.createAttributes().build()).put(EntityType.ILLUSIONER, Illusioner.createAttributes().build()).put(EntityType.IRON_GOLEM, IronGolem.createAttributes().build()).put(EntityType.LLAMA, Llama.createAttributes().build()).put(EntityType.MAGMA_CUBE, MagmaCube.createAttributes().build()).put(EntityType.MOOSHROOM, Cow.createAttributes().build()).put(EntityType.MULE, AbstractChestedHorse.createBaseChestedHorseAttributes().build()).put(EntityType.OCELOT, Ocelot.createAttributes().build()).put(EntityType.PANDA, Panda.createAttributes().build()).put(EntityType.PARROT, Parrot.createAttributes().build()).put(EntityType.PHANTOM, Monster.createMonsterAttributes().build()).put(EntityType.PIG, Pig.createAttributes().build()).put(EntityType.PIGLIN, Piglin.createAttributes().build()).put(EntityType.PIGLIN_BRUTE, PiglinBrute.createAttributes().build()).put(EntityType.PILLAGER, Pillager.createAttributes().build()).put(EntityType.PLAYER, Player.createAttributes().build()).put(EntityType.POLAR_BEAR, PolarBear.createAttributes().build()).put(EntityType.PUFFERFISH, AbstractFish.createAttributes().build()).put(EntityType.RABBIT, Rabbit.createAttributes().build()).put(EntityType.RAVAGER, Ravager.createAttributes().build()).put(EntityType.SALMON, AbstractFish.createAttributes().build()).put(EntityType.SHEEP, Sheep.createAttributes().build()).put(EntityType.SHULKER, Shulker.createAttributes().build()).put(EntityType.SILVERFISH, Silverfish.createAttributes().build()).put(EntityType.SKELETON, AbstractSkeleton.createAttributes().build()).put(EntityType.SKELETON_HORSE, SkeletonHorse.createAttributes().build()).put(EntityType.SLIME, Monster.createMonsterAttributes().build()).put(EntityType.SNOW_GOLEM, SnowGolem.createAttributes().build()).put(EntityType.SPIDER, Spider.createAttributes().build()).put(EntityType.SQUID, Squid.createAttributes().build()).put(EntityType.STRAY, AbstractSkeleton.createAttributes().build()).put(EntityType.STRIDER, Strider.createAttributes().build()).put(EntityType.TRADER_LLAMA, Llama.createAttributes().build()).put(EntityType.TROPICAL_FISH, AbstractFish.createAttributes().build()).put(EntityType.TURTLE, Turtle.createAttributes().build()).put(EntityType.VEX, Vex.createAttributes().build()).put(EntityType.VILLAGER, Villager.createAttributes().build()).put(EntityType.VINDICATOR, Vindicator.createAttributes().build()).put(EntityType.WANDERING_TRADER, Mob.createMobAttributes().build()).put(EntityType.WITCH, Witch.createAttributes().build()).put(EntityType.WITHER, WitherBoss.createAttributes().build()).put(EntityType.WITHER_SKELETON, AbstractSkeleton.createAttributes().build()).put(EntityType.WOLF, Wolf.createAttributes().build()).put(EntityType.ZOGLIN, Zoglin.createAttributes().build()).put(EntityType.ZOMBIE, Zombie.createAttributes().build()).put(EntityType.ZOMBIE_HORSE, ZombieHorse.createAttributes().build()).put(EntityType.ZOMBIE_VILLAGER, Zombie.createAttributes().build()).put(EntityType.ZOMBIFIED_PIGLIN, ZombifiedPiglin.createAttributes().build()).build(); + + // Purpur start @@ -543,10 +536,10 @@ index 7df56705a4a0de2dc4ff7ab133fc26612c219162..60d21d6171b9af20a4c6fcc0d564a31a } diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -index a76b754305036bf9c6387e27b86ec1559b290774..7814f9825ef1956c9f327bee8a0c268cda6eef21 100644 +index f11eb6df9f095109378caaf0fd16575bfb2e4976..ca053df9d4d9120c7bd926b3d2d511b71332b5df 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -@@ -19,6 +19,7 @@ import net.minecraft.world.entity.EntityDimensions; +@@ -18,6 +18,7 @@ import net.minecraft.world.entity.EntityDimensions; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.Mob; import net.minecraft.world.entity.MobSpawnType; @@ -554,7 +547,7 @@ index a76b754305036bf9c6387e27b86ec1559b290774..7814f9825ef1956c9f327bee8a0c268c import net.minecraft.world.entity.Pose; import net.minecraft.world.entity.ai.attributes.AttributeSupplier; import net.minecraft.world.entity.ai.attributes.Attributes; -@@ -42,9 +43,56 @@ public class Bat extends AmbientCreature { +@@ -41,9 +42,56 @@ public class Bat extends AmbientCreature { public Bat(EntityType type, Level world) { super(type, world); @@ -611,7 +604,7 @@ index a76b754305036bf9c6387e27b86ec1559b290774..7814f9825ef1956c9f327bee8a0c268c @Override public boolean isFlapping() { return !this.isResting() && this.tickCount % Bat.TICKS_PER_FLAP == 0; -@@ -94,7 +142,7 @@ public class Bat extends AmbientCreature { +@@ -93,7 +141,7 @@ public class Bat extends AmbientCreature { protected void pushEntities() {} public static AttributeSupplier.Builder createAttributes() { @@ -620,7 +613,7 @@ index a76b754305036bf9c6387e27b86ec1559b290774..7814f9825ef1956c9f327bee8a0c268c } public boolean isResting() { -@@ -126,6 +174,14 @@ public class Bat extends AmbientCreature { +@@ -125,6 +173,14 @@ public class Bat extends AmbientCreature { @Override protected void customServerAiStep() { @@ -698,10 +691,10 @@ index 3484defdfd5a487b11917310d7b1d1543291eee1..2ae0296b0a2e9585caf81b819742a0a8 this.fish.setSpeed(Mth.lerp(0.125F, this.fish.getSpeed(), f)); double d0 = this.wantedX - this.fish.getX(); 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 5a9d9926fb6fc356ee250d4e38f3bc303e280d45..fea80e6ed278bff6cd8773abe1a7def96b3a7c97 100644 +index b07fa7fba33b76ae7054dc95b583a3c7a381c5ab..08f2920dad7a10270f25dd8a2144e98199fb002d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java -@@ -44,6 +44,7 @@ import net.minecraft.world.entity.EntityType; +@@ -42,6 +42,7 @@ import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.Mob; import net.minecraft.world.entity.MobType; @@ -709,7 +702,7 @@ index 5a9d9926fb6fc356ee250d4e38f3bc303e280d45..fea80e6ed278bff6cd8773abe1a7def9 import net.minecraft.world.entity.NeutralMob; import net.minecraft.world.entity.PathfinderMob; import net.minecraft.world.entity.Pose; -@@ -144,6 +145,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -142,6 +143,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { public Bee(EntityType type, Level world) { super(type, world); this.remainingCooldownBeforeLocatingNewFlower = Mth.nextInt(this.random, 20, 60); @@ -717,7 +710,7 @@ index 5a9d9926fb6fc356ee250d4e38f3bc303e280d45..fea80e6ed278bff6cd8773abe1a7def9 // Paper start - apply gravity to bees when they get stuck in the void, fixes MC-167279 class BeeFlyingMoveControl extends FlyingMoveControl { public BeeFlyingMoveControl(final Mob entity, final int maxPitchChange, final boolean noGravity) { -@@ -152,11 +154,24 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -150,11 +152,24 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { @Override public void tick() { @@ -742,7 +735,7 @@ index 5a9d9926fb6fc356ee250d4e38f3bc303e280d45..fea80e6ed278bff6cd8773abe1a7def9 } this.moveControl = new BeeFlyingMoveControl(this, 20, true); // Paper end -@@ -168,6 +183,40 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -166,6 +181,40 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { this.setPathfindingMalus(BlockPathTypes.FENCE, -1.0F); } @@ -783,7 +776,7 @@ index 5a9d9926fb6fc356ee250d4e38f3bc303e280d45..fea80e6ed278bff6cd8773abe1a7def9 @Override protected void defineSynchedData() { super.defineSynchedData(); -@@ -182,6 +231,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -180,6 +229,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { @Override protected void registerGoals() { @@ -791,7 +784,7 @@ index 5a9d9926fb6fc356ee250d4e38f3bc303e280d45..fea80e6ed278bff6cd8773abe1a7def9 this.goalSelector.addGoal(0, new Bee.BeeAttackGoal(this, 1.399999976158142D, true)); this.goalSelector.addGoal(1, new Bee.BeeEnterHiveGoal()); this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D)); -@@ -197,6 +247,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -195,6 +245,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { this.goalSelector.addGoal(7, new Bee.BeeGrowCropGoal()); this.goalSelector.addGoal(8, new Bee.BeeWanderGoal()); this.goalSelector.addGoal(9, new FloatGoal(this)); @@ -799,7 +792,7 @@ index 5a9d9926fb6fc356ee250d4e38f3bc303e280d45..fea80e6ed278bff6cd8773abe1a7def9 this.targetSelector.addGoal(1, (new Bee.BeeHurtByOtherGoal(this)).setAlertOthers(new Class[0])); this.targetSelector.addGoal(2, new Bee.BeeBecomeAngryTargetGoal(this)); this.targetSelector.addGoal(3, new ResetUniversalAngerTargetGoal<>(this, true)); -@@ -879,16 +930,16 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -877,16 +928,16 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { } } @@ -820,10 +813,10 @@ index 5a9d9926fb6fc356ee250d4e38f3bc303e280d45..fea80e6ed278bff6cd8773abe1a7def9 } 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 b0d3444c721765e10217474ca57f703531e69260..495e3b17cc1c5b5d502a172a9b6bd8c95a7b2064 100644 +index 5f7c394f9cc178c9cb06c90b91296b979d61239b..60487cc84c3b4ce0b7e343895da0325c95b10c64 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cat.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java -@@ -122,6 +122,31 @@ public class Cat extends TamableAnimal { +@@ -124,6 +124,31 @@ public class Cat extends TamableAnimal { super(type, world); } @@ -855,7 +848,7 @@ index b0d3444c721765e10217474ca57f703531e69260..495e3b17cc1c5b5d502a172a9b6bd8c9 public ResourceLocation getResourceLocation() { return (ResourceLocation) Cat.TEXTURE_BY_TYPE.getOrDefault(this.getCatType(), (ResourceLocation) Cat.TEXTURE_BY_TYPE.get(0)); } -@@ -130,6 +155,7 @@ public class Cat extends TamableAnimal { +@@ -132,6 +157,7 @@ public class Cat extends TamableAnimal { protected void registerGoals() { this.temptGoal = new Cat.CatTemptGoal(this, 0.6D, Cat.TEMPT_INGREDIENT, true); this.goalSelector.addGoal(1, new FloatGoal(this)); @@ -863,7 +856,7 @@ index b0d3444c721765e10217474ca57f703531e69260..495e3b17cc1c5b5d502a172a9b6bd8c9 this.goalSelector.addGoal(1, new SitWhenOrderedToGoal(this)); this.goalSelector.addGoal(2, new Cat.CatRelaxOnOwnerGoal(this)); this.goalSelector.addGoal(3, this.temptGoal); -@@ -141,6 +167,7 @@ public class Cat extends TamableAnimal { +@@ -143,6 +169,7 @@ public class Cat extends TamableAnimal { this.goalSelector.addGoal(10, new BreedGoal(this, 0.8D)); this.goalSelector.addGoal(11, new WaterAvoidingRandomStrollGoal(this, 0.8D, 1.0000001E-5F)); this.goalSelector.addGoal(12, new LookAtPlayerGoal(this, Player.class, 10.0F)); @@ -871,7 +864,7 @@ index b0d3444c721765e10217474ca57f703531e69260..495e3b17cc1c5b5d502a172a9b6bd8c9 this.targetSelector.addGoal(1, new NonTameRandomTargetGoal<>(this, Rabbit.class, false, (Predicate) null)); this.targetSelector.addGoal(1, new NonTameRandomTargetGoal<>(this, Turtle.class, false, Turtle.BABY_ON_LAND_SELECTOR)); } -@@ -395,6 +422,7 @@ public class Cat extends TamableAnimal { +@@ -404,6 +431,7 @@ public class Cat extends TamableAnimal { @Override public InteractionResult mobInteract(Player player, InteractionHand hand) { @@ -880,7 +873,7 @@ index b0d3444c721765e10217474ca57f703531e69260..495e3b17cc1c5b5d502a172a9b6bd8c9 Item item = itemstack.getItem(); 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 aa373560120684a037ac02d8df196b97b791bd85..46ac6d4559be25914ebb24684fbeb33f471e226d 100644 +index 3e6aaf22f5f2891901c91fea988a97a25eade531..435531a41e53b65280ab24ead0d7e3e499d2a57d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Chicken.java +++ b/src/main/java/net/minecraft/world/entity/animal/Chicken.java @@ -52,9 +52,27 @@ public class Chicken extends Animal { @@ -989,10 +982,10 @@ index 425c6da0de40983b0870c9fd1b53f16b6a11c34c..8f046fb76b6967e72abde523ffb790e0 // CraftBukkit end 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 6f759d144c1b0f576a4fd617bf36456b72ff428d..ca8c0651642500a0aeded005a446eebbca7aa399 100644 +index b2baf0741691c9942e0cb7c161ccba528c2f6d4e..80af1e72b548ed52d148602dd66b7823f242c186 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java -@@ -80,14 +80,87 @@ public class Dolphin extends WaterAnimal { +@@ -78,14 +78,87 @@ public class Dolphin extends WaterAnimal { public static final Predicate ALLOWED_ITEMS = (entityitem) -> { return !entityitem.hasPickUpDelay() && entityitem.isAlive() && entityitem.isInWater(); }; @@ -1081,7 +1074,7 @@ index 6f759d144c1b0f576a4fd617bf36456b72ff428d..ca8c0651642500a0aeded005a446eebb @Nullable @Override public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData, @Nullable CompoundTag entityNbt) { -@@ -162,6 +235,7 @@ public class Dolphin extends WaterAnimal { +@@ -160,6 +233,7 @@ public class Dolphin extends WaterAnimal { protected void registerGoals() { this.goalSelector.addGoal(0, new BreathAirGoal(this)); this.goalSelector.addGoal(0, new TryFindWaterGoal(this)); @@ -1089,7 +1082,7 @@ index 6f759d144c1b0f576a4fd617bf36456b72ff428d..ca8c0651642500a0aeded005a446eebb this.goalSelector.addGoal(1, new Dolphin.DolphinSwimToTreasureGoal(this)); this.goalSelector.addGoal(2, new Dolphin.DolphinSwimWithPlayerGoal(this, 4.0D)); this.goalSelector.addGoal(4, new RandomSwimmingGoal(this, 1.0D, 10)); -@@ -172,6 +246,7 @@ public class Dolphin extends WaterAnimal { +@@ -170,6 +244,7 @@ public class Dolphin extends WaterAnimal { this.goalSelector.addGoal(8, new Dolphin.PlayWithItemsGoal()); this.goalSelector.addGoal(8, new FollowBoatGoal(this)); this.goalSelector.addGoal(9, new AvoidEntityGoal<>(this, Guardian.class, 8.0F, 1.0D, 1.0D)); @@ -1097,7 +1090,7 @@ index 6f759d144c1b0f576a4fd617bf36456b72ff428d..ca8c0651642500a0aeded005a446eebb this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, new Class[]{Guardian.class})).setAlertOthers()); } -@@ -223,7 +298,7 @@ public class Dolphin extends WaterAnimal { +@@ -221,7 +296,7 @@ public class Dolphin extends WaterAnimal { @Override protected boolean canRide(Entity entity) { @@ -1106,7 +1099,7 @@ index 6f759d144c1b0f576a4fd617bf36456b72ff428d..ca8c0651642500a0aeded005a446eebb } @Override -@@ -258,6 +333,11 @@ public class Dolphin extends WaterAnimal { +@@ -256,6 +331,11 @@ public class Dolphin extends WaterAnimal { @Override public void tick() { super.tick(); @@ -1119,10 +1112,10 @@ index 6f759d144c1b0f576a4fd617bf36456b72ff428d..ca8c0651642500a0aeded005a446eebb this.setAirSupply(this.getMaxAirSupply()); } else { 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 63f0ed4c80b7afa091c4a835eefd6d709428f984..7ce5908d439afd49bdb5e7ea629e7544e7a7ed18 100644 +index e36c01533dc85541c91f7a55690fae46f770b516..c389a2b368b7c5ae77293e8315302f0b08134a4c 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java -@@ -139,6 +139,44 @@ public class Fox extends Animal { +@@ -140,6 +140,44 @@ public class Fox extends Animal { this.setCanPickUpLoot(true); } @@ -1167,15 +1160,15 @@ index 63f0ed4c80b7afa091c4a835eefd6d709428f984..7ce5908d439afd49bdb5e7ea629e7544 @Override protected void defineSynchedData() { super.defineSynchedData(); -@@ -158,6 +196,7 @@ public class Fox extends Animal { +@@ -159,6 +197,7 @@ public class Fox extends Animal { return entityliving instanceof AbstractSchoolingFish; }); this.goalSelector.addGoal(0, new Fox.FoxFloatGoal()); + this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur + this.goalSelector.addGoal(0, new ClimbOnTopOfPowderSnowGoal(this, this.level)); this.goalSelector.addGoal(1, new Fox.FaceplantGoal()); this.goalSelector.addGoal(2, new Fox.FoxPanicGoal(2.2D)); - this.goalSelector.addGoal(3, new Fox.FoxBreedGoal(1.0D)); -@@ -183,6 +222,7 @@ public class Fox extends Animal { +@@ -185,6 +224,7 @@ public class Fox extends Animal { this.goalSelector.addGoal(11, new Fox.FoxSearchForItemsGoal()); this.goalSelector.addGoal(12, new Fox.FoxLookAtPlayerGoal(this, Player.class, 24.0F)); this.goalSelector.addGoal(13, new Fox.PerchAndSearchGoal()); @@ -1183,7 +1176,7 @@ index 63f0ed4c80b7afa091c4a835eefd6d709428f984..7ce5908d439afd49bdb5e7ea629e7544 this.targetSelector.addGoal(3, new Fox.DefendTrustedTargetGoal(LivingEntity.class, false, false, (entityliving) -> { return Fox.TRUSTED_TARGET_SELECTOR.test(entityliving) && !this.trusts(entityliving.getUUID()); })); -@@ -742,16 +782,16 @@ public class Fox extends Animal { +@@ -744,16 +784,16 @@ public class Fox extends Animal { return new Vec3(0.0D, (double) (0.55F * this.getEyeHeight()), (double) (this.getBbWidth() * 0.4F)); } @@ -1203,7 +1196,7 @@ index 63f0ed4c80b7afa091c4a835eefd6d709428f984..7ce5908d439afd49bdb5e7ea629e7544 } } -@@ -762,16 +802,16 @@ public class Fox extends Animal { +@@ -764,16 +804,16 @@ public class Fox extends Animal { } } @@ -1224,7 +1217,7 @@ index 63f0ed4c80b7afa091c4a835eefd6d709428f984..7ce5908d439afd49bdb5e7ea629e7544 } 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 d6bff18a60e1b0b507a3797742bfafff2fad10d2..ff3f3a1a1e5ac741e00fee71d213feea885b44d6 100644 +index 8299b48bad7a38d4310ca93b1de37d6c9170fc09..6b56e324900d809615d80f38528f302db60cfbc9 100644 --- a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java @@ -70,8 +70,27 @@ public class IronGolem extends AbstractGolem implements NeutralMob { @@ -1280,10 +1273,10 @@ index d6bff18a60e1b0b507a3797742bfafff2fad10d2..ff3f3a1a1e5ac741e00fee71d213feea float f1 = 1.0F + (this.random.nextFloat() - this.random.nextFloat()) * 0.2F; diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index a91c8d37b818161fb7e2dc0def82a56d7db04fc1..355bb96e6395749ea94afe39d66b9f93fee1bbfb 100644 +index 6d4dc4b09278eca509f86655c6562fb4b05d5069..9d47d010c3917616732ff10a1b0166f410cf6c25 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -@@ -65,6 +65,23 @@ public class MushroomCow extends Cow implements Shearable { +@@ -64,6 +64,23 @@ public class MushroomCow extends Cow implements Shearable { super(type, world); } @@ -1307,7 +1300,7 @@ index a91c8d37b818161fb7e2dc0def82a56d7db04fc1..355bb96e6395749ea94afe39d66b9f93 @Override public float getWalkTargetValue(BlockPos pos, LevelReader world) { return world.getBlockState(pos.below()).is(Blocks.MYCELIUM) ? 10.0F : world.getBrightness(pos) - 0.5F; -@@ -126,7 +143,7 @@ public class MushroomCow extends Cow implements Shearable { +@@ -125,7 +142,7 @@ public class MushroomCow extends Cow implements Shearable { } else if (itemstack.is(Items.SHEARS) && this.readyForShearing()) { // CraftBukkit start if (!CraftEventFactory.handlePlayerShearEntityEvent(player, this, itemstack, hand)) { @@ -1316,7 +1309,7 @@ index a91c8d37b818161fb7e2dc0def82a56d7db04fc1..355bb96e6395749ea94afe39d66b9f93 } // CraftBukkit end this.shear(SoundSource.PLAYERS); -@@ -147,7 +164,7 @@ public class MushroomCow extends Cow implements Shearable { +@@ -146,7 +163,7 @@ public class MushroomCow extends Cow implements Shearable { Optional> optional = this.getEffectFromItemStack(itemstack); if (!optional.isPresent()) { @@ -1326,10 +1319,10 @@ index a91c8d37b818161fb7e2dc0def82a56d7db04fc1..355bb96e6395749ea94afe39d66b9f93 Pair pair = (Pair) optional.get(); diff --git a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java -index a781048b0c43e63e441e6afecec125d7f838c342..2afcac92a3c5a57cc3b87ffe28dc867030adbe80 100644 +index 24d14c3a98453622e9805298c56625311f69e8dd..c63377ef2d843aa6ee6ed86e545e2b6a06575edf 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java -@@ -69,6 +69,23 @@ public class Ocelot extends Animal { +@@ -68,6 +68,23 @@ public class Ocelot extends Animal { this.reassessTrustingGoals(); } @@ -1353,7 +1346,7 @@ index a781048b0c43e63e441e6afecec125d7f838c342..2afcac92a3c5a57cc3b87ffe28dc8670 public boolean isTrusting() { return (Boolean) this.entityData.get(Ocelot.DATA_TRUSTING); } -@@ -100,12 +117,14 @@ public class Ocelot extends Animal { +@@ -99,12 +116,14 @@ public class Ocelot extends Animal { protected void registerGoals() { this.temptGoal = new Ocelot.OcelotTemptGoal(this, 0.6D, Ocelot.TEMPT_INGREDIENT, true); this.goalSelector.addGoal(1, new FloatGoal(this)); @@ -1369,7 +1362,7 @@ index a781048b0c43e63e441e6afecec125d7f838c342..2afcac92a3c5a57cc3b87ffe28dc8670 this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, false, false, Turtle.BABY_ON_LAND_SELECTOR)); } diff --git a/src/main/java/net/minecraft/world/entity/animal/Panda.java b/src/main/java/net/minecraft/world/entity/animal/Panda.java -index 26e1898f6c9d716f8efa7b0cc4b9ad947e36ebd6..92a3c99711f7e590563e278e575914e0bd65da93 100644 +index 8db4fc59b99694d2b15af188fc1c39ccf0090a8d..c477671b68d243dbead2067066e56044a5a38e7c 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Panda.java +++ b/src/main/java/net/minecraft/world/entity/animal/Panda.java @@ -107,6 +107,32 @@ public class Panda extends Animal { @@ -1421,7 +1414,7 @@ index 26e1898f6c9d716f8efa7b0cc4b9ad947e36ebd6..92a3c99711f7e590563e278e575914e0 this.targetSelector.addGoal(1, (new Panda.PandaHurtByTargetGoal(this, new Class[0])).setAlertOthers(new Class[0])); } -@@ -618,7 +646,7 @@ public class Panda extends Animal { +@@ -621,7 +649,7 @@ public class Panda extends Animal { ItemStack itemstack = player.getItemInHand(hand); if (this.isScared()) { @@ -1430,7 +1423,7 @@ index 26e1898f6c9d716f8efa7b0cc4b9ad947e36ebd6..92a3c99711f7e590563e278e575914e0 } else if (this.isOnBack()) { this.setOnBack(false); return InteractionResult.sidedSuccess(this.level.isClientSide); -@@ -637,7 +665,7 @@ public class Panda extends Animal { +@@ -640,7 +668,7 @@ public class Panda extends Animal { this.gameEvent(GameEvent.MOB_INTERACT, this.eyeBlockPosition()); } else { if (this.level.isClientSide || this.isSitting() || this.isInWater()) { @@ -1439,7 +1432,7 @@ index 26e1898f6c9d716f8efa7b0cc4b9ad947e36ebd6..92a3c99711f7e590563e278e575914e0 } this.tryToSit(); -@@ -654,7 +682,7 @@ public class Panda extends Animal { +@@ -657,7 +685,7 @@ public class Panda extends Animal { return InteractionResult.SUCCESS; } else { @@ -1448,7 +1441,7 @@ index 26e1898f6c9d716f8efa7b0cc4b9ad947e36ebd6..92a3c99711f7e590563e278e575914e0 } } -@@ -694,7 +722,7 @@ public class Panda extends Animal { +@@ -697,7 +725,7 @@ public class Panda extends Animal { return !this.isOnBack() && !this.isScared() && !this.isEating() && !this.isRolling() && !this.isSitting(); } @@ -1457,7 +1450,7 @@ index 26e1898f6c9d716f8efa7b0cc4b9ad947e36ebd6..92a3c99711f7e590563e278e575914e0 private final Panda panda; -@@ -704,9 +732,9 @@ public class Panda extends Animal { +@@ -707,9 +735,9 @@ public class Panda extends Animal { } @Override @@ -1470,10 +1463,10 @@ index 26e1898f6c9d716f8efa7b0cc4b9ad947e36ebd6..92a3c99711f7e590563e278e575914e0 } } 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 dd80d9e0614445ba088c295784dc30584dedaa2b..d3b5b37347f1a52ccf58f6cb61aab454b1d8cb35 100644 +index eb66cfebce7e8bb9ebce066e5aabff256a8a518d..19af87b2496178be9d2d09ba16ac511a1882d2ed 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -@@ -126,12 +126,68 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { +@@ -124,12 +124,68 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { public Parrot(EntityType type, Level world) { super(type, world); @@ -1543,7 +1536,7 @@ index dd80d9e0614445ba088c295784dc30584dedaa2b..d3b5b37347f1a52ccf58f6cb61aab454 @Nullable @Override public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData, @Nullable CompoundTag entityNbt) { -@@ -150,8 +206,10 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { +@@ -148,8 +204,10 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { @Override protected void registerGoals() { @@ -1588,10 +1581,10 @@ index f24b87ff18d4255289c8130f32fd205014ee2747..c4c0d7958156b0d587999032c8f9fac9 this.goalSelector.addGoal(3, new BreedGoal(this, 1.0D)); this.goalSelector.addGoal(4, new TemptGoal(this, 1.2D, Ingredient.of(Items.CARROT_ON_A_STICK), false)); 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 75b8c36f8616cf9f4c751c4a5285cad06be1631d..590a8358846fc89a3c33ca52c70a8471f4999a01 100644 +index 1495e0e2d298b501251c5bceaedf7ae123d2f69c..2c723250eea3454d6b7aafb307612a2c06c42b73 100644 --- a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java +++ b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java -@@ -62,11 +62,40 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -60,11 +60,40 @@ public class PolarBear extends Animal implements NeutralMob { private int remainingPersistentAngerTime; @Nullable private UUID persistentAngerTarget; @@ -1632,7 +1625,7 @@ index 75b8c36f8616cf9f4c751c4a5285cad06be1631d..590a8358846fc89a3c33ca52c70a8471 @Override public AgeableMob getBreedOffspring(ServerLevel world, AgeableMob entity) { return EntityType.POLAR_BEAR.create(world); -@@ -81,12 +110,14 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -79,12 +108,14 @@ public class PolarBear extends Animal implements NeutralMob { protected void registerGoals() { super.registerGoals(); this.goalSelector.addGoal(0, new FloatGoal(this)); @@ -1647,7 +1640,7 @@ index 75b8c36f8616cf9f4c751c4a5285cad06be1631d..590a8358846fc89a3c33ca52c70a8471 this.targetSelector.addGoal(1, new PolarBear.PolarBearHurtByTargetGoal()); this.targetSelector.addGoal(2, new PolarBear.PolarBearAttackPlayersGoal()); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, this::isAngryAt)); -@@ -203,6 +234,11 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -201,6 +232,11 @@ public class PolarBear extends Animal implements NeutralMob { this.updatePersistentAnger((ServerLevel)this.level, true); } @@ -1659,7 +1652,7 @@ index 75b8c36f8616cf9f4c751c4a5285cad06be1631d..590a8358846fc89a3c33ca52c70a8471 } @Override -@@ -232,6 +268,7 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -230,6 +266,7 @@ public class PolarBear extends Animal implements NeutralMob { public void setStanding(boolean warning) { this.entityData.set(DATA_STANDING_ID, warning); @@ -1668,7 +1661,7 @@ index 75b8c36f8616cf9f4c751c4a5285cad06be1631d..590a8358846fc89a3c33ca52c70a8471 public float getStandingAnimationScale(float tickDelta) { diff --git a/src/main/java/net/minecraft/world/entity/animal/Pufferfish.java b/src/main/java/net/minecraft/world/entity/animal/Pufferfish.java -index f576e602f2fce87cdebc194b474dced64952178b..6f27a07b62f69350b1cee5f0170a7af1a3b99b9d 100644 +index ce02552c1b3c62cf9f48425838a129a3ec40a049..71929e5fe8851ad5620f25b6ed5058653231d769 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Pufferfish.java +++ b/src/main/java/net/minecraft/world/entity/animal/Pufferfish.java @@ -45,6 +45,23 @@ public class Pufferfish extends AbstractFish { @@ -1696,10 +1689,10 @@ index f576e602f2fce87cdebc194b474dced64952178b..6f27a07b62f69350b1cee5f0170a7af1 protected void defineSynchedData() { super.defineSynchedData(); 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 518f48bdd35d1b351c49771b1c98717fb2696685..f155cf36c59979464a0edcfd31d5e8433df60607 100644 +index 51001c18803a5a2c8a1c4ce258348142e56c2275..0819503e8651afa9ff42df7077667eaa3a310df4 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java +++ b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java -@@ -83,6 +83,7 @@ public class Rabbit extends Animal { +@@ -84,6 +84,7 @@ public class Rabbit extends Animal { private boolean wasOnGround; private int jumpDelayTicks; int moreCarrotTicks; @@ -1707,7 +1700,7 @@ index 518f48bdd35d1b351c49771b1c98717fb2696685..f155cf36c59979464a0edcfd31d5e843 public Rabbit(EntityType type, Level world) { super(type, world); -@@ -91,6 +92,51 @@ public class Rabbit extends Animal { +@@ -92,6 +93,51 @@ public class Rabbit extends Animal { this.initializePathFinderGoals(); // CraftBukkit - moved code } @@ -1759,15 +1752,15 @@ index 518f48bdd35d1b351c49771b1c98717fb2696685..f155cf36c59979464a0edcfd31d5e843 // CraftBukkit start - code from constructor public void initializePathFinderGoals(){ this.setSpeedModifier(0.0D); -@@ -100,6 +146,7 @@ public class Rabbit extends Animal { +@@ -101,6 +147,7 @@ public class Rabbit extends Animal { @Override public void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); + this.goalSelector.addGoal(1, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur + this.goalSelector.addGoal(1, new ClimbOnTopOfPowderSnowGoal(this, this.level)); this.goalSelector.addGoal(1, new Rabbit.RabbitPanicGoal(this, 2.2D)); this.goalSelector.addGoal(2, new BreedGoal(this, 0.8D)); - this.goalSelector.addGoal(3, new TemptGoal(this, 1.0D, Ingredient.of(Items.CARROT, Items.GOLDEN_CARROT, Blocks.DANDELION), false)); -@@ -113,6 +160,13 @@ public class Rabbit extends Animal { +@@ -115,6 +162,13 @@ public class Rabbit extends Animal { @Override protected float getJumpPower() { @@ -1781,7 +1774,7 @@ index 518f48bdd35d1b351c49771b1c98717fb2696685..f155cf36c59979464a0edcfd31d5e843 if (!this.horizontalCollision && (!this.moveControl.hasWanted() || this.moveControl.getWantedY() <= this.getY() + 0.5D)) { Path pathentity = this.navigation.getPath(); -@@ -131,7 +185,7 @@ public class Rabbit extends Animal { +@@ -133,7 +187,7 @@ public class Rabbit extends Animal { } @Override @@ -1790,7 +1783,7 @@ index 518f48bdd35d1b351c49771b1c98717fb2696685..f155cf36c59979464a0edcfd31d5e843 super.jumpFromGround(); double d0 = this.moveControl.getSpeedModifier(); -@@ -181,6 +235,13 @@ public class Rabbit extends Animal { +@@ -183,6 +237,13 @@ public class Rabbit extends Animal { @Override public void customServerAiStep() { @@ -1804,7 +1797,7 @@ index 518f48bdd35d1b351c49771b1c98717fb2696685..f155cf36c59979464a0edcfd31d5e843 if (this.jumpDelayTicks > 0) { --this.jumpDelayTicks; } -@@ -451,7 +512,7 @@ public class Rabbit extends Animal { +@@ -453,7 +514,7 @@ public class Rabbit extends Animal { } } @@ -1813,7 +1806,7 @@ index 518f48bdd35d1b351c49771b1c98717fb2696685..f155cf36c59979464a0edcfd31d5e843 private final Rabbit rabbit; private double nextJumpSpeed; -@@ -462,14 +523,14 @@ public class Rabbit extends Animal { +@@ -464,14 +525,14 @@ public class Rabbit extends Animal { } @Override @@ -1892,7 +1885,7 @@ index 1d4e504434ba9730101588c0bb0aab8f1ef6a7db..e267e7b3b4ba96f5423327a336088942 this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D)); this.goalSelector.addGoal(3, new TemptGoal(this, 1.1D, Ingredient.of(Items.WHEAT), false)); 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 dbc0ebf7e1d7ae7c89bafad19b0d9f209674b2c9..4fc9b738d6e33fb804276c5897aed3ab2b0040c9 100644 +index 24f66a24d5a4698d141e697db50da5794747be7b..3ead4cc2fa875b8839410d7b4b5871e5b1d39074 100644 --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java @@ -54,12 +54,31 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @@ -1954,10 +1947,10 @@ index dbc0ebf7e1d7ae7c89bafad19b0d9f209674b2c9..4fc9b738d6e33fb804276c5897aed3ab } 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 370513fbc39f178f903ce140ced1a97029dd39db..d1ec00edb1782993b47a0837171fa80b8d1cb0b7 100644 +index a51424d29ac353cf1bec4d1484db0acb63bebba5..30687391baacd693fa3bb9e3efbd492d4e4d32c8 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java -@@ -51,9 +51,37 @@ public class Squid extends WaterAnimal { +@@ -50,9 +50,37 @@ public class Squid extends WaterAnimal { this.tentacleSpeed = 1.0F / (this.random.nextFloat() + 1.0F) * 0.2F; } @@ -1995,7 +1988,7 @@ index 370513fbc39f178f903ce140ced1a97029dd39db..d1ec00edb1782993b47a0837171fa80b this.goalSelector.addGoal(1, new Squid.SquidFleeGoal()); } -@@ -242,6 +270,38 @@ public class Squid extends WaterAnimal { +@@ -244,6 +272,38 @@ public class Squid extends WaterAnimal { @Override public void tick() { @@ -2035,10 +2028,10 @@ index 370513fbc39f178f903ce140ced1a97029dd39db..d1ec00edb1782993b47a0837171fa80b if (i > 100) { diff --git a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java -index 4745086ccacfb9863df1979c2d098cb5d81f1535..3bb43fac9b3405433b9d416b5154a5d49f673fc7 100644 +index fd6175ce96860402a4e458ce0d5d81be6f7bf99d..6295c88832dd2f4ceec67f4f4a3477629494ccf7 100644 --- a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java +++ b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java -@@ -50,6 +50,23 @@ public class TropicalFish extends AbstractSchoolingFish { +@@ -49,6 +49,23 @@ public class TropicalFish extends AbstractSchoolingFish { super(type, world); } @@ -2063,10 +2056,10 @@ index 4745086ccacfb9863df1979c2d098cb5d81f1535..3bb43fac9b3405433b9d416b5154a5d4 return "entity.minecraft.tropical_fish.predefined." + variant; } diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -index 56e9c0d15249562ebea8eb451d4bcc9ff5e7d594..0148a83cbd1e60be227f500e3f3bf3a89632b556 100644 +index ac17fd4454730db831cf9b781963062db8614bb7..bd370b91e482913971816dac5f04f494c3951563 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -@@ -86,6 +86,23 @@ public class Turtle extends Animal { +@@ -84,6 +84,23 @@ public class Turtle extends Animal { this.maxUpStep = 1.0F; } @@ -2090,7 +2083,7 @@ index 56e9c0d15249562ebea8eb451d4bcc9ff5e7d594..0148a83cbd1e60be227f500e3f3bf3a8 public void setHomePos(BlockPos pos) { this.entityData.set(Turtle.HOME_POS, pos.immutable()); // Paper - called with mutablepos... } -@@ -188,6 +205,7 @@ public class Turtle extends Animal { +@@ -186,6 +203,7 @@ public class Turtle extends Animal { @Override protected void registerGoals() { @@ -2098,7 +2091,7 @@ index 56e9c0d15249562ebea8eb451d4bcc9ff5e7d594..0148a83cbd1e60be227f500e3f3bf3a8 this.goalSelector.addGoal(0, new Turtle.TurtlePanicGoal(this, 1.2D)); this.goalSelector.addGoal(1, new Turtle.TurtleBreedGoal(this, 1.0D)); this.goalSelector.addGoal(1, new Turtle.TurtleLayEggGoal(this, 1.0D)); -@@ -345,13 +363,15 @@ public class Turtle extends Animal { +@@ -343,13 +361,15 @@ public class Turtle extends Animal { org.bukkit.craftbukkit.event.CraftEventFactory.entityDamage = null; // CraftBukkit } @@ -2115,7 +2108,7 @@ index 56e9c0d15249562ebea8eb451d4bcc9ff5e7d594..0148a83cbd1e60be227f500e3f3bf3a8 } private void updateSpeed() { -@@ -370,8 +390,18 @@ public class Turtle extends Animal { +@@ -368,8 +388,18 @@ public class Turtle extends Animal { } @@ -2135,7 +2128,7 @@ index 56e9c0d15249562ebea8eb451d4bcc9ff5e7d594..0148a83cbd1e60be227f500e3f3bf3a8 this.updateSpeed(); if (this.operation == MoveControl.Operation.MOVE_TO && !this.turtle.getNavigation().isDone()) { double d0 = this.wantedX - this.turtle.getX(); -@@ -384,7 +414,7 @@ public class Turtle extends Animal { +@@ -382,7 +412,7 @@ public class Turtle extends Animal { this.turtle.setYRot(this.rotlerp(this.turtle.getYRot(), f, 90.0F)); this.turtle.yBodyRot = this.turtle.getYRot(); @@ -2145,11 +2138,11 @@ index 56e9c0d15249562ebea8eb451d4bcc9ff5e7d594..0148a83cbd1e60be227f500e3f3bf3a8 this.turtle.setSpeed(Mth.lerp(0.125F, this.turtle.getSpeed(), f1)); this.turtle.setDeltaMovement(this.turtle.getDeltaMovement().add(0.0D, (double) this.turtle.getSpeed() * d1 * 0.1D, 0.0D)); 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 4797c34872f8fa2fba00172357c4f45e45cfe27f..5a7a8e3b31f4598216ebeaef12cfb377cfbd771b 100644 +index aaf7096835bab3a42d617553dd83e048e4a83766..851dfd17602767556e34059d1282de3c6191480e 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -@@ -99,9 +99,32 @@ public class Wolf extends TamableAnimal implements NeutralMob { - this.setTame(false); +@@ -102,9 +102,32 @@ public class Wolf extends TamableAnimal implements NeutralMob { + this.setPathfindingMalus(BlockPathTypes.DANGER_POWDER_SNOW, -1.0F); } + // Purpur start @@ -2178,10 +2171,10 @@ index 4797c34872f8fa2fba00172357c4f45e45cfe27f..5a7a8e3b31f4598216ebeaef12cfb377 protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); + this.goalSelector.addGoal(1, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur + this.goalSelector.addGoal(1, new Wolf.WolfPanicGoal(1.5D)); this.goalSelector.addGoal(2, new SitWhenOrderedToGoal(this)); this.goalSelector.addGoal(3, new Wolf.WolfAvoidEntityGoal<>(this, Llama.class, 24.0F, 1.5D, 1.5D)); - this.goalSelector.addGoal(4, new LeapAtTargetGoal(this, 0.4F)); -@@ -112,6 +135,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -116,6 +139,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { this.goalSelector.addGoal(9, new BegGoal(this, 8.0F)); this.goalSelector.addGoal(10, new LookAtPlayerGoal(this, Player.class, 8.0F)); this.goalSelector.addGoal(10, new RandomLookAroundGoal(this)); @@ -2190,10 +2183,10 @@ index 4797c34872f8fa2fba00172357c4f45e45cfe27f..5a7a8e3b31f4598216ebeaef12cfb377 this.targetSelector.addGoal(2, new OwnerHurtTargetGoal(this)); this.targetSelector.addGoal(3, (new HurtByTargetGoal(this, new Class[0])).setAlertOthers()); diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index c296862063d2dcaf5e2d03d316c49ae03ab7d625..80ee4883d72d8beaa73865740eec8fc20becd0af 100644 +index fb800bf3fc198c1aee9a8bdc8d33e5e76f6a8746..46d57c1a852a99db3ddb0ccd10f6229e223e0a32 100644 --- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -@@ -97,6 +97,28 @@ public class Axolotl extends Animal implements LerpingModel, Bucketable { +@@ -99,6 +99,28 @@ public class Axolotl extends Animal implements LerpingModel, Bucketable { this.maxUpStep = 1.0F; } @@ -2222,7 +2215,7 @@ index c296862063d2dcaf5e2d03d316c49ae03ab7d625..80ee4883d72d8beaa73865740eec8fc2 @Override public Map getModelRotationValues() { return this.modelRotationValues; -@@ -522,14 +544,22 @@ public class Axolotl extends Animal implements LerpingModel, Bucketable { +@@ -531,14 +553,22 @@ public class Axolotl extends Animal implements LerpingModel, Bucketable { private static class AxolotlMoveControl extends SmoothSwimmingMoveControl { private final Axolotl axolotl; @@ -2245,7 +2238,7 @@ index c296862063d2dcaf5e2d03d316c49ae03ab7d625..80ee4883d72d8beaa73865740eec8fc2 if (!this.axolotl.isPlayingDead()) { super.tick(); } -@@ -544,9 +574,9 @@ public class Axolotl extends Animal implements LerpingModel, Bucketable { +@@ -553,9 +583,9 @@ public class Axolotl extends Animal implements LerpingModel, Bucketable { } @Override @@ -2258,11 +2251,11 @@ index c296862063d2dcaf5e2d03d316c49ae03ab7d625..80ee4883d72d8beaa73865740eec8fc2 } diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index d5cd18c478bedaeed83de31d442d1a5b0f0f54cf..07e2a7839d8aaf2915c9b8ba74653870f11def88 100644 +index 042e852cd440e62003b5e72d92728e2dc602f279..ea82e3f2dc219c11de7841358a6d2e1408825387 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -@@ -74,6 +74,23 @@ public class Goat extends Animal { - this.getNavigation().setCanFloat(true); +@@ -69,6 +69,23 @@ public class Goat extends Animal { + this.setPathfindingMalus(BlockPathTypes.DANGER_POWDER_SNOW, -1.0F); } + // Purpur start @@ -2285,7 +2278,7 @@ index d5cd18c478bedaeed83de31d442d1a5b0f0f54cf..07e2a7839d8aaf2915c9b8ba74653870 @Override protected Brain.Provider brainProvider() { return Brain.provider(Goat.MEMORY_TYPES, Goat.SENSOR_TYPES); -@@ -150,7 +167,7 @@ public class Goat extends Animal { +@@ -145,7 +162,7 @@ public class Goat extends Animal { @Override protected void customServerAiStep() { this.level.getProfiler().push("goatBrain"); @@ -2366,10 +2359,10 @@ index 7af7ff4accbcc1b28d96c94e9c3301142541f4f0..a91152df3d443d70b1aa9aff97b3746e protected void randomizeAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue((double)this.generateRandomMaxHealth()); 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 9a401b3e8db61d0b92ca273db2eb84efc4dfa8fc..7059b66fe81ffd3f757b595ae107ec69222db8e7 100644 +index ff18a7615c2798b1dc9106154577a49d1ae70d43..2b72dc5c76fe717bd8643a6ac45fdbb8d36bd632 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -@@ -72,7 +72,51 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { +@@ -71,7 +71,51 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { public Llama(EntityType type, Level world) { super(type, world); @@ -2421,7 +2414,7 @@ index 9a401b3e8db61d0b92ca273db2eb84efc4dfa8fc..7059b66fe81ffd3f757b595ae107ec69 public boolean isTraderLlama() { return false; -@@ -124,6 +168,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { +@@ -123,6 +167,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { @Override protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); @@ -2429,7 +2422,7 @@ index 9a401b3e8db61d0b92ca273db2eb84efc4dfa8fc..7059b66fe81ffd3f757b595ae107ec69 this.goalSelector.addGoal(1, new RunAroundLikeCrazyGoal(this, 1.2D)); this.goalSelector.addGoal(2, new LlamaFollowCaravanGoal(this, 2.0999999046325684D)); this.goalSelector.addGoal(3, new RangedAttackGoal(this, 1.25D, 40, 20.0F)); -@@ -134,6 +179,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { +@@ -133,6 +178,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { this.goalSelector.addGoal(7, new WaterAvoidingRandomStrollGoal(this, 0.7D)); this.goalSelector.addGoal(8, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(9, new RandomLookAroundGoal(this)); @@ -2573,10 +2566,10 @@ index 305a891e4b51d1031d9e9238ff00e2ea7de8d954..84625d09df800fcfd477fc493fb5f824 protected void defineSynchedData() { } 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 b74cdaecb361851b0662002c8ec8f196ab1275bd..3a9c958c838bbc68003818bbc1fa990344636119 100644 +index 1eb76c456790b81b657090377dd5ea547898f9a5..24fb7e822ed91581f09e85ac92ad58088bd8980b 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -@@ -102,6 +102,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -100,6 +100,7 @@ public class EnderDragon extends Mob implements Enemy { private final int[] nodeAdjacency = new int[24]; private final BinaryHeap openSet = new BinaryHeap(); private Explosion explosionSource = new Explosion(null, this, null, null, Double.NaN, Double.NaN, Double.NaN, Float.NaN, true, Explosion.BlockInteraction.DESTROY); // CraftBukkit - reusable source for CraftTNTPrimed.getSource() @@ -2584,7 +2577,7 @@ index b74cdaecb361851b0662002c8ec8f196ab1275bd..3a9c958c838bbc68003818bbc1fa9903 public EnderDragon(EntityType entitytypes, Level world) { super(EntityType.ENDER_DRAGON, world); -@@ -116,8 +117,50 @@ public class EnderDragon extends Mob implements Enemy { +@@ -114,8 +115,50 @@ public class EnderDragon extends Mob implements Enemy { } this.phaseManager = new EnderDragonPhaseManager(this); @@ -2635,7 +2628,7 @@ index b74cdaecb361851b0662002c8ec8f196ab1275bd..3a9c958c838bbc68003818bbc1fa9903 public static AttributeSupplier.Builder createAttributes() { return Mob.createMobAttributes().add(Attributes.MAX_HEALTH, 200.0D); } -@@ -166,6 +209,37 @@ public class EnderDragon extends Mob implements Enemy { +@@ -164,6 +207,37 @@ public class EnderDragon extends Mob implements Enemy { @Override public void aiStep() { @@ -2673,7 +2666,7 @@ index b74cdaecb361851b0662002c8ec8f196ab1275bd..3a9c958c838bbc68003818bbc1fa9903 this.processFlappingMovement(); if (this.level.isClientSide) { this.setHealth(this.getHealth()); -@@ -179,6 +253,8 @@ public class EnderDragon extends Mob implements Enemy { +@@ -177,6 +251,8 @@ public class EnderDragon extends Mob implements Enemy { float f; if (this.isDeadOrDying()) { @@ -2682,7 +2675,7 @@ index b74cdaecb361851b0662002c8ec8f196ab1275bd..3a9c958c838bbc68003818bbc1fa9903 float f1 = (this.random.nextFloat() - 0.5F) * 8.0F; f = (this.random.nextFloat() - 0.5F) * 4.0F; -@@ -191,9 +267,9 @@ public class EnderDragon extends Mob implements Enemy { +@@ -189,9 +265,9 @@ public class EnderDragon extends Mob implements Enemy { f = 0.2F / ((float) vec3d.horizontalDistance() * 10.0F + 1.0F); f *= (float) Math.pow(2.0D, vec3d.y); @@ -2694,7 +2687,7 @@ index b74cdaecb361851b0662002c8ec8f196ab1275bd..3a9c958c838bbc68003818bbc1fa9903 this.flapTime += f * 0.5F; } else { this.flapTime += f; -@@ -238,7 +314,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -236,7 +312,7 @@ public class EnderDragon extends Mob implements Enemy { } this.phaseManager.getCurrentPhase().doClientTick(); @@ -2703,7 +2696,7 @@ index b74cdaecb361851b0662002c8ec8f196ab1275bd..3a9c958c838bbc68003818bbc1fa9903 DragonPhaseInstance idragoncontroller = this.phaseManager.getCurrentPhase(); idragoncontroller.doServerTick(); -@@ -308,7 +384,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -305,7 +381,7 @@ public class EnderDragon extends Mob implements Enemy { this.tickPart(this.body, (double) (f11 * 0.5F), 0.0D, (double) (-f12 * 0.5F)); this.tickPart(this.wing1, (double) (f12 * 4.5F), 2.0D, (double) (f11 * 4.5F)); this.tickPart(this.wing2, (double) (f12 * -4.5F), 2.0D, (double) (f11 * -4.5F)); @@ -2712,7 +2705,7 @@ index b74cdaecb361851b0662002c8ec8f196ab1275bd..3a9c958c838bbc68003818bbc1fa9903 this.knockBack(this.level.getEntities((Entity) this, this.wing1.getBoundingBox().inflate(4.0D, 2.0D, 4.0D).move(0.0D, -2.0D, 0.0D), EntitySelector.NO_CREATIVE_OR_SPECTATOR)); this.knockBack(this.level.getEntities((Entity) this, this.wing2.getBoundingBox().inflate(4.0D, 2.0D, 4.0D).move(0.0D, -2.0D, 0.0D), EntitySelector.NO_CREATIVE_OR_SPECTATOR)); this.hurt(this.level.getEntities((Entity) this, this.head.getBoundingBox().inflate(1.0D), EntitySelector.NO_CREATIVE_OR_SPECTATOR)); -@@ -352,7 +428,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -349,7 +425,7 @@ public class EnderDragon extends Mob implements Enemy { } if (!this.level.isClientSide) { @@ -2722,10 +2715,10 @@ index b74cdaecb361851b0662002c8ec8f196ab1275bd..3a9c958c838bbc68003818bbc1fa9903 this.dragonFight.updateDragon(this); } 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 c0ee9915c971482e765d91b4f85d65c3a1f526eb..5f1583c8a0ab7ebfd715de314f7cfae0754e1ece 100644 +index 563a028018421cbafdeff398175a32d6830134af..c475a8f53e7076f7655cebc3ac420eabee166674 100644 --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -@@ -85,6 +85,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -84,6 +84,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob return entityliving.getMobType() != MobType.UNDEAD && entityliving.attackable(); }; private static final TargetingConditions TARGETING_CONDITIONS = TargetingConditions.forCombat().range(20.0D).selector(WitherBoss.LIVING_ENTITY_SELECTOR); @@ -2733,7 +2726,7 @@ index c0ee9915c971482e765d91b4f85d65c3a1f526eb..5f1583c8a0ab7ebfd715de314f7cfae0 // Paper start private boolean canPortal = false; -@@ -106,16 +107,123 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -105,16 +106,123 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob navigationflying.setCanOpenDoors(false); navigationflying.setCanFloat(true); navigationflying.setCanPassDoors(true); @@ -2857,7 +2850,7 @@ index c0ee9915c971482e765d91b4f85d65c3a1f526eb..5f1583c8a0ab7ebfd715de314f7cfae0 this.targetSelector.addGoal(1, new HurtByTargetGoal(this, new Class[0])); this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, LivingEntity.class, 0, false, false, WitherBoss.LIVING_ENTITY_SELECTOR)); } -@@ -257,6 +365,16 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -256,6 +364,16 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @Override protected void customServerAiStep() { @@ -2874,7 +2867,7 @@ index c0ee9915c971482e765d91b4f85d65c3a1f526eb..5f1583c8a0ab7ebfd715de314f7cfae0 int i; if (this.getInvulnerableTicks() > 0) { -@@ -584,11 +702,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -583,11 +701,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob } public int getAlternativeTarget(int headIndex) { @@ -3020,7 +3013,7 @@ index d980b906d9206560741576fa4153c57212f307a0..790d4abbc8e0b288e20e72e63f8190e9 public boolean doHurtTarget(Entity target) { if (super.doHurtTarget(target)) { 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 c2dbe53f504327f153efe195c74ad28c1b89791f..3451d4b2427978c8ff2893fad9f2c0cfc8c5f472 100644 +index f9193f8cd3b0d0e689a523c7142a897c342c2931..1476372a78092b103c037028f08cb1eae9464706 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java @@ -60,21 +60,98 @@ public class Creeper extends Monster implements PowerableMob { @@ -3131,10 +3124,10 @@ index c2dbe53f504327f153efe195c74ad28c1b89791f..3451d4b2427978c8ff2893fad9f2c0cf } // Paper end 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 ccaa50d1ba9151bd94333b6b8fc0e77bc4324990..6c89aa825b51fd1054bb04d4a6a23778e90bd7c6 100644 +index 030ddefe45563bdd0a7091ae60d365f9aa58b6fc..1aa7877879f4ec884067103abcba81a70ef82a49 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java +++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java -@@ -69,6 +69,23 @@ public class Drowned extends Zombie implements RangedAttackMob { +@@ -67,6 +67,23 @@ public class Drowned extends Zombie implements RangedAttackMob { this.groundNavigation = new GroundPathNavigation(this, world); } @@ -3158,7 +3151,7 @@ index ccaa50d1ba9151bd94333b6b8fc0e77bc4324990..6c89aa825b51fd1054bb04d4a6a23778 @Override protected void addBehaviourGoals() { this.goalSelector.addGoal(1, new Drowned.DrownedGoToWaterGoal(this, 1.0D)); -@@ -382,7 +399,7 @@ public class Drowned extends Zombie implements RangedAttackMob { +@@ -380,7 +397,7 @@ public class Drowned extends Zombie implements RangedAttackMob { } } @@ -3167,7 +3160,7 @@ index ccaa50d1ba9151bd94333b6b8fc0e77bc4324990..6c89aa825b51fd1054bb04d4a6a23778 private final Drowned drowned; public DrownedMoveControl(Drowned drowned) { -@@ -391,7 +408,7 @@ public class Drowned extends Zombie implements RangedAttackMob { +@@ -389,7 +406,7 @@ public class Drowned extends Zombie implements RangedAttackMob { } @Override @@ -3176,7 +3169,7 @@ index ccaa50d1ba9151bd94333b6b8fc0e77bc4324990..6c89aa825b51fd1054bb04d4a6a23778 LivingEntity livingEntity = this.drowned.getTarget(); if (this.drowned.wantsToSwim() && this.drowned.isInWater()) { if (livingEntity != null && livingEntity.getY() > this.drowned.getY() || this.drowned.searchingForLand) { -@@ -411,7 +428,7 @@ public class Drowned extends Zombie implements RangedAttackMob { +@@ -409,7 +426,7 @@ public class Drowned extends Zombie implements RangedAttackMob { float h = (float)(Mth.atan2(f, d) * (double)(180F / (float)Math.PI)) - 90.0F; this.drowned.setYRot(this.rotlerp(this.drowned.getYRot(), h, 90.0F)); this.drowned.yBodyRot = this.drowned.getYRot(); @@ -3185,7 +3178,7 @@ index ccaa50d1ba9151bd94333b6b8fc0e77bc4324990..6c89aa825b51fd1054bb04d4a6a23778 float j = Mth.lerp(0.125F, this.drowned.getSpeed(), i); this.drowned.setSpeed(j); this.drowned.setDeltaMovement(this.drowned.getDeltaMovement().add((double)j * d * 0.005D, (double)j * e * 0.1D, (double)j * f * 0.005D)); -@@ -420,7 +437,7 @@ public class Drowned extends Zombie implements RangedAttackMob { +@@ -418,7 +435,7 @@ public class Drowned extends Zombie implements RangedAttackMob { this.drowned.setDeltaMovement(this.drowned.getDeltaMovement().add(0.0D, -0.008D, 0.0D)); } @@ -3223,10 +3216,10 @@ index ee9194ffb3cc6d660d4f99a3914ede7e4a3643fe..7e79fe61e4fd0d26f62a0515c437370c return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.30000001192092896D).add(Attributes.ATTACK_DAMAGE, 8.0D).add(Attributes.MAX_HEALTH, 80.0D); } 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 5e207a3ea30ead2749c1121e2df8da53c8ebfdd7..1af2aa7d2a3e6a21cd95b6c6f9a32d155c159f05 100644 +index 987b7d1924a9caa710fc350012533e56a378646b..e1d6996944a48d55b3ad5125ab6790e22c905024 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -88,9 +88,27 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -87,9 +87,27 @@ public class EnderMan extends Monster implements NeutralMob { this.setPathfindingMalus(BlockPathTypes.WATER, -1.0F); } @@ -3254,7 +3247,7 @@ index 5e207a3ea30ead2749c1121e2df8da53c8ebfdd7..1af2aa7d2a3e6a21cd95b6c6f9a32d15 this.goalSelector.addGoal(1, new EnderMan.EndermanFreezeWhenLookedAt(this)); this.goalSelector.addGoal(2, new MeleeAttackGoal(this, 1.0D, false)); this.goalSelector.addGoal(7, new WaterAvoidingRandomStrollGoal(this, 1.0D, 0.0F)); -@@ -98,6 +116,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -97,6 +115,7 @@ public class EnderMan extends Monster implements NeutralMob { this.goalSelector.addGoal(8, new RandomLookAroundGoal(this)); this.goalSelector.addGoal(10, new EnderMan.EndermanLeaveBlockGoal(this)); this.goalSelector.addGoal(11, new EnderMan.EndermanTakeBlockGoal(this)); @@ -3262,7 +3255,7 @@ index 5e207a3ea30ead2749c1121e2df8da53c8ebfdd7..1af2aa7d2a3e6a21cd95b6c6f9a32d15 this.targetSelector.addGoal(1, new EnderMan.EndermanLookForPlayerGoal(this, this::isAngryAt)); this.targetSelector.addGoal(2, new HurtByTargetGoal(this, new Class[0])); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Endermite.class, true, false)); -@@ -279,7 +298,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -278,7 +297,7 @@ public class EnderMan extends Monster implements NeutralMob { @Override protected void customServerAiStep() { @@ -3271,7 +3264,7 @@ index 5e207a3ea30ead2749c1121e2df8da53c8ebfdd7..1af2aa7d2a3e6a21cd95b6c6f9a32d15 float f = this.getBrightness(); if (f > 0.5F && this.level.canSeeSky(this.blockPosition()) && this.random.nextFloat() * 30.0F < (f - 0.4F) * 2.0F && this.tryEscape(com.destroystokyo.paper.event.entity.EndermanEscapeEvent.Reason.RUNAWAY)) { // Paper -@@ -385,6 +404,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -384,6 +403,7 @@ public class EnderMan extends Monster implements NeutralMob { public boolean hurt(DamageSource source, float amount) { if (this.isInvulnerableTo(source)) { return false; @@ -3280,10 +3273,10 @@ index 5e207a3ea30ead2749c1121e2df8da53c8ebfdd7..1af2aa7d2a3e6a21cd95b6c6f9a32d15 Entity entity = source.getDirectEntity(); boolean flag; 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 56d313c2c4a98eac7f4f594d2c29dcd82a4753ac..59ccb6ff28d888874ffb380bda9dbb3ded1d76ed 100644 +index 313afd946c31f1e68dfdc465e53def261c1453e1..97b4342af7232bdf89382bda6a5ea50f5882cedc 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Endermite.java +++ b/src/main/java/net/minecraft/world/entity/monster/Endermite.java -@@ -36,13 +36,32 @@ public class Endermite extends Monster { +@@ -37,14 +37,33 @@ public class Endermite extends Monster { this.xpReward = 3; } @@ -3308,6 +3301,7 @@ index 56d313c2c4a98eac7f4f594d2c29dcd82a4753ac..59ccb6ff28d888874ffb380bda9dbb3d protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); + this.goalSelector.addGoal(1, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur + this.goalSelector.addGoal(1, new ClimbOnTopOfPowderSnowGoal(this, this.level)); this.goalSelector.addGoal(2, new MeleeAttackGoal(this, 1.0D, false)); this.goalSelector.addGoal(3, new WaterAvoidingRandomStrollGoal(this, 1.0D)); this.goalSelector.addGoal(7, new LookAtPlayerGoal(this, Player.class, 8.0F)); @@ -3317,7 +3311,7 @@ index 56d313c2c4a98eac7f4f594d2c29dcd82a4753ac..59ccb6ff28d888874ffb380bda9dbb3d this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); } 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 fb1fdf8f50f54463ee711d373c90622afe5a863f..4ed00e61227e2a50a0a80834e2d6c7ad6c691284 100644 +index 7f695625134ba55f85c54efddd049e167e0d1d8b..169a19b605a4b7edda0d1d04e83d9bb5ea554b99 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Evoker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Evoker.java @@ -48,10 +48,28 @@ public class Evoker extends SpellcasterIllager { @@ -3639,7 +3633,7 @@ index 86f7fdd42461db151221d2c0d5cff6953392fa80..98c85e31a2238cbfa31c12214ade49c4 this.targetSelector.addGoal(2, (new NearestAttackableTargetGoal<>(this, Player.class, true)).setUnseenMemoryTicks(300)); this.targetSelector.addGoal(3, (new NearestAttackableTargetGoal<>(this, AbstractVillager.class, false)).setUnseenMemoryTicks(300)); diff --git a/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java b/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java -index 2ffe85ee5565bcae56b8a64567c34eeed71e4e4b..d111d6afb7c0937e48f7d212dec5f2d4a1c0a673 100644 +index d7bbfddb69685698fdacbc7b5f36204bd873e7cc..3e9ab5db23799e67e28d7fc88d4c3ad96bc44fdc 100644 --- a/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java +++ b/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java @@ -27,6 +27,28 @@ public class MagmaCube extends Slime { @@ -3694,7 +3688,7 @@ index 2ffe85ee5565bcae56b8a64567c34eeed71e4e4b..d111d6afb7c0937e48f7d212dec5f2d4 @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 -index 5c35b73c13c3826be9705e05154076810a78d147..28660b9e8ead72638fea3f9adf8cd95cbc820170 100644 +index b55640ed068becd40cbb7d7507b4e67ae9ee792a..79c2f0482a7adbd50e1063edf2839f4fb3ab0847 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java @@ -60,6 +60,64 @@ public class Phantom extends FlyingMob implements Enemy { @@ -3973,10 +3967,10 @@ index a9dfe190f46230077e2e1bf9aacbf5375651f216..9507e4817e62c749726e4cf9914f51da public ShulkerLookControl(Mob entity) { super(entity); 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 195cdae3f3a9fe8ecab2895a6000f6f855e9a9b8..0073cfb4b68f4a5938336c063c382ad4c14536d9 100644 +index 97c2c1647fa12650e5963c7c1c746fec2429e3d7..46539619fedda76185dc40d24f74df0b93067d61 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java +++ b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java -@@ -41,13 +41,32 @@ public class Silverfish extends Monster { +@@ -42,14 +42,33 @@ public class Silverfish extends Monster { super(type, world); } @@ -4002,6 +3996,7 @@ index 195cdae3f3a9fe8ecab2895a6000f6f855e9a9b8..0073cfb4b68f4a5938336c063c382ad4 this.friendsGoal = new Silverfish.SilverfishWakeUpFriendsGoal(this); this.goalSelector.addGoal(1, new FloatGoal(this)); + this.goalSelector.addGoal(1, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur + this.goalSelector.addGoal(1, new ClimbOnTopOfPowderSnowGoal(this, this.level)); this.goalSelector.addGoal(3, this.friendsGoal); this.goalSelector.addGoal(4, new MeleeAttackGoal(this, 1.0D, false)); this.goalSelector.addGoal(5, new Silverfish.SilverfishMergeWithStoneGoal(this)); @@ -4038,10 +4033,10 @@ index 3a3f3358c4bbd16bdcadc56c6a865ecfb942ad54..e73644f453bed8523bfad47764018362 protected void defineSynchedData() { super.defineSynchedData(); diff --git a/src/main/java/net/minecraft/world/entity/monster/Slime.java b/src/main/java/net/minecraft/world/entity/monster/Slime.java -index 9c440625ce89686b2c250e6aaa62ed83b7015412..4ded6fed9a5f3fbe8721bebc4f1fdb33d282e6bc 100644 +index b6e78e8145ea78d532f22707c7525829c5778076..86d8150934769c886ad657877993e1b4d4ab6829 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Slime.java +++ b/src/main/java/net/minecraft/world/entity/monster/Slime.java -@@ -67,18 +67,55 @@ public class Slime extends Mob implements Enemy { +@@ -65,18 +65,55 @@ public class Slime extends Mob implements Enemy { public float squish; public float oSquish; private boolean wasOnGround; @@ -4097,7 +4092,7 @@ index 9c440625ce89686b2c250e6aaa62ed83b7015412..4ded6fed9a5f3fbe8721bebc4f1fdb33 this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, (entityliving) -> { return Math.abs(entityliving.getY() - this.getY()) <= 4.0D; })); -@@ -368,11 +405,12 @@ public class Slime extends Mob implements Enemy { +@@ -366,11 +403,12 @@ public class Slime extends Mob implements Enemy { } @Override @@ -4111,7 +4106,7 @@ index 9c440625ce89686b2c250e6aaa62ed83b7015412..4ded6fed9a5f3fbe8721bebc4f1fdb33 } @Nullable -@@ -405,7 +443,7 @@ public class Slime extends Mob implements Enemy { +@@ -403,7 +441,7 @@ public class Slime extends Mob implements Enemy { return super.getDimensions(pose).scale(0.255F * (float) this.getSize()); } @@ -4120,7 +4115,7 @@ index 9c440625ce89686b2c250e6aaa62ed83b7015412..4ded6fed9a5f3fbe8721bebc4f1fdb33 private float yRot; private int jumpDelay; -@@ -424,21 +462,33 @@ public class Slime extends Mob implements Enemy { +@@ -422,21 +460,33 @@ public class Slime extends Mob implements Enemy { } public void setWantedMovement(double speed) { @@ -4157,7 +4152,7 @@ index 9c440625ce89686b2c250e6aaa62ed83b7015412..4ded6fed9a5f3fbe8721bebc4f1fdb33 if (this.jumpDelay-- <= 0) { this.jumpDelay = this.slime.getJumpDelay(); if (this.isAggressive) { -@@ -455,7 +505,7 @@ public class Slime extends Mob implements Enemy { +@@ -453,7 +503,7 @@ public class Slime extends Mob implements Enemy { this.mob.setSpeed(0.0F); } } else { @@ -4233,10 +4228,10 @@ index baf614d2dbfb54d25fe06b28709ba2b7176c5213..b97862f653fe0aca93335fdd1ef0cf87 BlockPos blockPos = pos; 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 0380f8800f87afa3f8ee2b4be508b5f08e35a6ac..fc43b53e8a0c7674ec523536e615a4ee62ada61c 100644 +index 0676f452280a9148546c35d1113932b5adc1fc3d..f809b68b0250670c07a2e0ed0f62efa8499b133f 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Strider.java +++ b/src/main/java/net/minecraft/world/entity/monster/Strider.java -@@ -97,6 +97,23 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { +@@ -96,6 +96,23 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { this.setPathfindingMalus(BlockPathTypes.DAMAGE_FIRE, 0.0F); } @@ -4260,7 +4255,7 @@ index 0380f8800f87afa3f8ee2b4be508b5f08e35a6ac..fc43b53e8a0c7674ec523536e615a4ee public static boolean checkStriderSpawnRules(EntityType type, LevelAccessor world, MobSpawnType spawnReason, BlockPos pos, Random random) { BlockPos.MutableBlockPos blockposition_mutableblockposition = pos.mutable(); -@@ -158,6 +175,7 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { +@@ -157,6 +174,7 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { @Override protected void registerGoals() { this.panicGoal = new PanicGoal(this, 1.65D); @@ -4268,7 +4263,7 @@ index 0380f8800f87afa3f8ee2b4be508b5f08e35a6ac..fc43b53e8a0c7674ec523536e615a4ee this.goalSelector.addGoal(1, this.panicGoal); this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D)); this.temptGoal = new TemptGoal(this, 1.4D, Strider.TEMPT_ITEMS, false); -@@ -438,7 +456,7 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { +@@ -437,7 +455,7 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { if (!enuminteractionresult.consumesAction()) { ItemStack itemstack = player.getItemInHand(hand); @@ -4278,7 +4273,7 @@ index 0380f8800f87afa3f8ee2b4be508b5f08e35a6ac..fc43b53e8a0c7674ec523536e615a4ee if (flag && !this.isSilent()) { this.level.playSound((Player) null, this.getX(), this.getY(), this.getZ(), SoundEvents.STRIDER_EAT, this.getSoundSource(), 1.0F, 1.0F + (this.random.nextFloat() - this.random.nextFloat()) * 0.2F); diff --git a/src/main/java/net/minecraft/world/entity/monster/Vex.java b/src/main/java/net/minecraft/world/entity/monster/Vex.java -index 8ff606567297296e30e7e543890d9971d6c165b0..66311fc3cf8f0ed50174bb834067d4365c393fef 100644 +index 149bff0edd0e70a340c400ffa9904e3503369844..d154ce3119d231b8c8da299ec22e2a9b2bae6394 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Vex.java +++ b/src/main/java/net/minecraft/world/entity/monster/Vex.java @@ -58,6 +58,50 @@ public class Vex extends Monster { @@ -4429,7 +4424,7 @@ index b3a00bff85ade49b476c883350ff3563e1a4b842..ddb0b32821aa6f61370ce8d262ce3d84 this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, true)); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, IronGolem.class, true)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Witch.java b/src/main/java/net/minecraft/world/entity/monster/Witch.java -index 43e4562dcb0de8db42ff556134f649b5e0aa4284..8e643b22a2af74acfe2b6710586a40c19ddcc085 100644 +index f9eb4a3a37454de78c65f895a82e67a854b6909b..7775f1428a455f0d52f43ed07102cb242f6d23ad 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Witch.java +++ b/src/main/java/net/minecraft/world/entity/monster/Witch.java @@ -59,6 +59,23 @@ public class Witch extends Raider implements RangedAttackMob { @@ -4557,7 +4552,7 @@ index 056e4c2f7f632dadc0015710c032a0b718d46ff9..a6aaffc41a39be4ae1da44d54a27d324 this.level.getProfiler().pop(); this.updateActivity(); 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 35f0203d260c11b729c30e6241316fda4b70bfd7..cd70d228a690485c7f379d0744262907d19fa080 100644 +index 1954e1b179539be725c291cdda16fb17c8bcea47..d88d8572f013f2487e6b523a5d7c4f3d9aef0bd4 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -104,11 +104,30 @@ public class Zombie extends Monster { @@ -4592,11 +4587,11 @@ index 35f0203d260c11b729c30e6241316fda4b70bfd7..cd70d228a690485c7f379d0744262907 } 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 5c6b2bc734c4f49395856975ff77bfbae2b0e85a..8371ddd1a6cc5245d996c3c4b4c2248f20df7b98 100644 +index ba92be2a63df29cd6eda251f8e56e9ce098d92ac..c9d2938615a254fe76dc9fb8667b3f7dffdfe9bd 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -@@ -75,6 +75,23 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { - this.setVillagerData(this.getVillagerData().setProfession((VillagerProfession) Registry.VILLAGER_PROFESSION.getRandom(this.random))); +@@ -79,6 +79,23 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { + }); } + // Purpur start @@ -4620,7 +4615,7 @@ index 5c6b2bc734c4f49395856975ff77bfbae2b0e85a..8371ddd1a6cc5245d996c3c4b4c2248f protected void 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 -index c1e0cf7d86d7b45cc4ca342d80f0dc3fe43b0bfd..af60b2666529fbf83578672e9a4a03d4783602fe 100644 +index 6fe49abb9d9a273787828e72061e16a7b053e50a..c2cd88e8ef4b543635b02e1fdd2ac257f64a05c2 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java @@ -59,6 +59,23 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { @@ -4645,8 +4640,8 @@ index c1e0cf7d86d7b45cc4ca342d80f0dc3fe43b0bfd..af60b2666529fbf83578672e9a4a03d4 + // Purpur end + @Override - public void setPersistentAngerTarget(@Nullable UUID uuid) { - this.persistentAngerTarget = uuid; + public void setPersistentAngerTarget(@Nullable UUID angryAt) { + this.persistentAngerTarget = angryAt; diff --git a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java index fc43b1d5dcb53456bb24ae46ea08b97b14403c86..1d3227a216b7daea6555f1c859c9a571050ff18b 100644 --- a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java @@ -4767,10 +4762,10 @@ index ea0040a3494709efb4819c7530dbcc37aa62e86a..8ad63ae82a8b6a26c03e53b6d043128a this.level.getProfiler().pop(); PiglinBruteAi.updateActivity(this); 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 7d6bc3c253a77adfc7c35383caadb37154dc5c0f..dd37faff29a8c8199fd0c6730d9bdc79ad97e254 100644 +index 63903bd02c6f31d3190a20d106997d4f7b777df8..c6d232f73dd1cfe5c88848e5a89f8716c3b7dee4 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -153,6 +153,28 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -155,6 +155,28 @@ public class Villager extends AbstractVillager implements ReputationEventHandler this.setVillagerData(this.getVillagerData().setType(type).setProfession(VillagerProfession.NONE)); } @@ -4799,7 +4794,7 @@ index 7d6bc3c253a77adfc7c35383caadb37154dc5c0f..dd37faff29a8c8199fd0c6730d9bdc79 @Override public Brain getBrain() { return (Brain) super.getBrain(); // CraftBukkit - decompile error -@@ -250,7 +272,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -252,7 +274,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler this.level.getProfiler().push("villagerBrain"); // Pufferfish start if (!inactive) { @@ -4808,7 +4803,7 @@ index 7d6bc3c253a77adfc7c35383caadb37154dc5c0f..dd37faff29a8c8199fd0c6730d9bdc79 this.getBrain().tick((ServerLevel) this.level, this); // Paper } // Pufferfish end -@@ -310,7 +332,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -312,7 +334,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler if (!itemstack.is(Items.VILLAGER_SPAWN_EGG) && this.isAlive() && !this.isTrading() && !this.isSleeping()) { if (this.isBaby()) { this.setUnhappy(); @@ -4817,7 +4812,7 @@ index 7d6bc3c253a77adfc7c35383caadb37154dc5c0f..dd37faff29a8c8199fd0c6730d9bdc79 } else { boolean flag = this.getOffers().isEmpty(); -@@ -323,8 +345,9 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -325,8 +347,9 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } if (flag) { @@ -4829,10 +4824,10 @@ index 7d6bc3c253a77adfc7c35383caadb37154dc5c0f..dd37faff29a8c8199fd0c6730d9bdc79 this.startTrading(player); } 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 642279bb7e15db9f662094ffd6ded2e3c7af3fd6..ac17d5e9fa110c5de297be2a762631ce03e081eb 100644 +index 86e1ba898d6b92735258419fa74352e5116226dc..2ae9a5da91ad20f1b566a686dcc8d4f14c62ecc5 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -@@ -67,6 +67,23 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill +@@ -66,6 +66,23 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill //this.setDespawnDelay(48000); // CraftBukkit - set default from MobSpawnerTrader // Paper - move back to MobSpawnerTrader - Vanilla behavior is that only traders spawned by it have this value set. } @@ -4856,7 +4851,7 @@ index 642279bb7e15db9f662094ffd6ded2e3c7af3fd6..ac17d5e9fa110c5de297be2a762631ce @Override protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); -@@ -114,8 +131,9 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill +@@ -113,8 +130,9 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill } if (this.getOffers().isEmpty()) { @@ -4868,10 +4863,10 @@ index 642279bb7e15db9f662094ffd6ded2e3c7af3fd6..ac17d5e9fa110c5de297be2a762631ce this.setTradingPlayer(player); this.openTradingScreen(player, this.getDisplayName(), 1); 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 d85da02be7f1d494af8f2cc840c49073774f5f9c..a706ab000eba2d996862a73a3bd38f1971b31b82 100644 +index 9c767096ca950d55d6002282c7a3fe2884bcd630..54b0e70dc8d89ebcad345b414c759d70d47dd4a2 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -191,6 +191,19 @@ public abstract class Player extends LivingEntity { +@@ -192,6 +192,19 @@ public abstract class Player extends LivingEntity { } // CraftBukkit end @@ -4922,7 +4917,7 @@ index 4759a6b3d3cd7973744562adf97d110d359ebce3..cfb43f277c013680a0e51fb93796e38f Projectile(EntityType type, Level world) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 989aaca1d56423729d4f5a491cd4c501342dac7c..728eba385fe5c658bc61114029192295ec7ebf05 100644 +index a92755211e3d42934b5efaa3f201c6c19ab7d2b4..318456621faf484dbad479b2873ae647e0c0f037 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -1311,4 +1311,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { diff --git a/patches/server/0007-Configurable-entity-base-attributes.patch b/patches/server/0007-Configurable-entity-base-attributes.patch index aa6488422..53db722f9 100644 --- a/patches/server/0007-Configurable-entity-base-attributes.patch +++ b/patches/server/0007-Configurable-entity-base-attributes.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable entity base attributes diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 622bc5a8e7e105ee9368f67be3ae7740ecaaf256..27d95f88ef904402c1277818734310c9e37f9cde 100644 +index b630e2a4decc750474f4c9dc6669ecb420a9ceaf..191d11db966255b515864a5430ddea40220217ef 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -149,7 +149,7 @@ import org.bukkit.plugin.PluginManager; +@@ -152,7 +152,7 @@ import org.bukkit.plugin.PluginManager; // CraftBukkit end public abstract class Entity implements Nameable, EntityAccess, CommandSource, io.papermc.paper.util.KeyedObject { // Paper @@ -18,7 +18,7 @@ index 622bc5a8e7e105ee9368f67be3ae7740ecaaf256..27d95f88ef904402c1277818734310c9 private static final int CURRENT_LEVEL = 2; public boolean preserveMotion = true; // Paper - keep initial motion on first setPositionRotation diff --git a/src/main/java/net/minecraft/world/entity/GlowSquid.java b/src/main/java/net/minecraft/world/entity/GlowSquid.java -index 912767ed261e44c0192c5a07e2c2026110988816..da00dcb474bec9ac8b8fc3ecf530fca154348059 100644 +index 2ce9b08535cf3783e6823de3489433003a1aae0d..9734ed30af10832fbbede43848fd82591320d1ce 100644 --- a/src/main/java/net/minecraft/world/entity/GlowSquid.java +++ b/src/main/java/net/minecraft/world/entity/GlowSquid.java @@ -38,6 +38,11 @@ public class GlowSquid extends Squid { @@ -34,10 +34,10 @@ index 912767ed261e44c0192c5a07e2c2026110988816..da00dcb474bec9ac8b8fc3ecf530fca1 @Override diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index c7a6756521cc7c188910304f62a579b6724853e2..e25bf8d2b00fab28aefc0587af5e05cb45c4e352 100644 +index 69d14a128cbd4bcfc36b3a3b6acfbf4168ffbb79..0b671716ed700d735c76798f61abd0f5b509c2fc 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -283,6 +283,7 @@ public abstract class LivingEntity extends Entity { +@@ -286,6 +286,7 @@ public abstract class LivingEntity extends Entity { this.useItem = ItemStack.EMPTY; this.lastClimbablePos = Optional.empty(); this.attributes = new AttributeMap(DefaultAttributes.getSupplier(type), this); // Purpur @@ -45,8 +45,8 @@ index c7a6756521cc7c188910304f62a579b6724853e2..e25bf8d2b00fab28aefc0587af5e05cb this.craftAttributes = new CraftAttributeMap(this.attributes); // CraftBukkit // CraftBukkit - setHealth(getMaxHealth()) inlined and simplified to skip the instanceof check for EntityPlayer, as getBukkitEntity() is not initialized in constructor this.entityData.set(LivingEntity.DATA_HEALTH_ID, (float) this.getAttribute(Attributes.MAX_HEALTH).getValue()); -@@ -298,6 +299,8 @@ public abstract class LivingEntity extends Entity { - this.brain = this.makeBrain(new Dynamic(dynamicopsnbt, (net.minecraft.nbt.Tag) dynamicopsnbt.createMap((Map) ImmutableMap.of(dynamicopsnbt.createString("memories"), (net.minecraft.nbt.Tag) dynamicopsnbt.emptyMap())))); +@@ -301,6 +302,8 @@ public abstract class LivingEntity extends Entity { + this.brain = this.makeBrain(new Dynamic(dynamicopsnbt, (Tag) dynamicopsnbt.createMap((Map) ImmutableMap.of(dynamicopsnbt.createString("memories"), (Tag) dynamicopsnbt.emptyMap())))); } + protected void initAttributes() {}// Purpur @@ -55,10 +55,10 @@ index c7a6756521cc7c188910304f62a579b6724853e2..e25bf8d2b00fab28aefc0587af5e05cb return this.brain; } diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -index 7814f9825ef1956c9f327bee8a0c268cda6eef21..1fbe37705556e62752be4719994e1cde96f3434d 100644 +index ca053df9d4d9120c7bd926b3d2d511b71332b5df..70b8698ef3863c957ac4639f113f235705da4667 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -@@ -91,6 +91,18 @@ public class Bat extends AmbientCreature { +@@ -90,6 +90,18 @@ public class Bat extends AmbientCreature { setDeltaMovement(mot.scale(0.9D)); } } @@ -78,10 +78,10 @@ index 7814f9825ef1956c9f327bee8a0c268cda6eef21..1fbe37705556e62752be4719994e1cde @Override 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 fea80e6ed278bff6cd8773abe1a7def96b3a7c97..4fc7c9c2fd2b9c083bd08fb4da9355279a94d287 100644 +index 08f2920dad7a10270f25dd8a2144e98199fb002d..d288cf90ffd35ee52f324670cd4369b4d15424ba 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java -@@ -215,6 +215,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -213,6 +213,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { setDeltaMovement(mot.scale(0.9D)); } } @@ -94,10 +94,10 @@ index fea80e6ed278bff6cd8773abe1a7def96b3a7c97..4fc7c9c2fd2b9c083bd08fb4da935527 @Override 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 495e3b17cc1c5b5d502a172a9b6bd8c95a7b2064..3a8130f7bbf67a0426c8a2f4785c9865dc0159ce 100644 +index 60487cc84c3b4ce0b7e343895da0325c95b10c64..94ca386af796c1dd2ebff537566486d3db428165 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cat.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java -@@ -145,6 +145,11 @@ public class Cat extends TamableAnimal { +@@ -147,6 +147,11 @@ public class Cat extends TamableAnimal { setLying(false); setRelaxStateOne(false); } @@ -110,7 +110,7 @@ index 495e3b17cc1c5b5d502a172a9b6bd8c95a7b2064..3a8130f7bbf67a0426c8a2f4785c9865 public ResourceLocation getResourceLocation() { 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 46ac6d4559be25914ebb24684fbeb33f471e226d..6f0a3e303d7b4d95302f477eef0d2590b89bef42 100644 +index 435531a41e53b65280ab24ead0d7e3e499d2a57d..b90272a5da33ded237c4ca1ba3c027d5392e1fca 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Chicken.java +++ b/src/main/java/net/minecraft/world/entity/animal/Chicken.java @@ -67,6 +67,11 @@ public class Chicken extends Animal { @@ -158,10 +158,10 @@ index 8f046fb76b6967e72abde523ffb790e0f46b80e0..dd4d5e2e7cbfed18cf3b4664dbe08eaf @Override 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 ca8c0651642500a0aeded005a446eebbca7aa399..af2a46699fc2520a796a68f77c12ff6479d87e31 100644 +index 80af1e72b548ed52d148602dd66b7823f242c186..5dfc40bd19c556a5bc481ab9bdcbd19887e7e5c9 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java -@@ -159,6 +159,11 @@ public class Dolphin extends WaterAnimal { +@@ -157,6 +157,11 @@ public class Dolphin extends WaterAnimal { } return false; } @@ -174,10 +174,10 @@ index ca8c0651642500a0aeded005a446eebbca7aa399..af2a46699fc2520a796a68f77c12ff64 @Nullable 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 7ce5908d439afd49bdb5e7ea629e7544e7a7ed18..4754ea923d3bbee130ec8eecf8e51b99e561c3e6 100644 +index c389a2b368b7c5ae77293e8315302f0b08134a4c..1e0239434fc6a9b39e2326d5ee98f01e9bcb263f 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java -@@ -175,6 +175,11 @@ public class Fox extends Animal { +@@ -176,6 +176,11 @@ public class Fox extends Animal { super.onDismount(rider); setCanPickUpLoot(true); } @@ -190,7 +190,7 @@ index 7ce5908d439afd49bdb5e7ea629e7544e7a7ed18..4754ea923d3bbee130ec8eecf8e51b99 @Override 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 ff3f3a1a1e5ac741e00fee71d213feea885b44d6..4c9ef9c044fbc427ad1ffb2b0f3b1ceda379ae00 100644 +index 6b56e324900d809615d80f38528f302db60cfbc9..fe7d88d81d70d46acf031f82495d0503f5b6b5d8 100644 --- a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java @@ -85,6 +85,11 @@ public class IronGolem extends AbstractGolem implements NeutralMob { @@ -206,10 +206,10 @@ index ff3f3a1a1e5ac741e00fee71d213feea885b44d6..4c9ef9c044fbc427ad1ffb2b0f3b1ced @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index 355bb96e6395749ea94afe39d66b9f93fee1bbfb..94550588f4e40da3f43ecd227e044fcfafec6084 100644 +index 9d47d010c3917616732ff10a1b0166f410cf6c25..2846c17ddbb546d49407338f136e171a329b347e 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -@@ -80,6 +80,11 @@ public class MushroomCow extends Cow implements Shearable { +@@ -79,6 +79,11 @@ public class MushroomCow extends Cow implements Shearable { public boolean isControllable() { return level.purpurConfig.mooshroomControllable; } @@ -222,10 +222,10 @@ index 355bb96e6395749ea94afe39d66b9f93fee1bbfb..94550588f4e40da3f43ecd227e044fcf @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java -index 2afcac92a3c5a57cc3b87ffe28dc867030adbe80..14897eea8446a257bbcb48cbcfd1828ab9ad0bec 100644 +index c63377ef2d843aa6ee6ed86e545e2b6a06575edf..5f0d2606bc9a250c35562671ba85440fab30a5b1 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java -@@ -84,6 +84,11 @@ public class Ocelot extends Animal { +@@ -83,6 +83,11 @@ public class Ocelot extends Animal { public boolean isControllable() { return level.purpurConfig.ocelotControllable; } @@ -238,7 +238,7 @@ index 2afcac92a3c5a57cc3b87ffe28dc867030adbe80..14897eea8446a257bbcb48cbcfd1828a public boolean isTrusting() { diff --git a/src/main/java/net/minecraft/world/entity/animal/Panda.java b/src/main/java/net/minecraft/world/entity/animal/Panda.java -index 92a3c99711f7e590563e278e575914e0bd65da93..880093a2c547c49fe29aacef87320082dbd38168 100644 +index c477671b68d243dbead2067066e56044a5a38e7c..bcbf20728b4c9a181771984c54af742f07fd9855 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Panda.java +++ b/src/main/java/net/minecraft/world/entity/animal/Panda.java @@ -131,6 +131,12 @@ public class Panda extends Animal { @@ -254,7 +254,7 @@ index 92a3c99711f7e590563e278e575914e0bd65da93..880093a2c547c49fe29aacef87320082 // Purpur end @Override -@@ -623,7 +629,10 @@ public class Panda extends Animal { +@@ -626,7 +632,10 @@ public class Panda extends Animal { public void setAttributes() { if (this.isWeak()) { @@ -267,10 +267,10 @@ index 92a3c99711f7e590563e278e575914e0bd65da93..880093a2c547c49fe29aacef87320082 if (this.isLazy()) { 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 d3b5b37347f1a52ccf58f6cb61aab454b1d8cb35..b2963b0064c6f01adc1d8a54b7c5687c79ba6a73 100644 +index 19af87b2496178be9d2d09ba16ac511a1882d2ed..91b8117238e76c00d758180df5cfd70ae76ace22 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -@@ -186,6 +186,11 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { +@@ -184,6 +184,11 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { setDeltaMovement(mot.scale(0.9D)); } } @@ -299,10 +299,10 @@ index c4c0d7958156b0d587999032c8f9fac9fd689c72..62a1e63fb6ca80e165db46c4d03e2881 @Override 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 590a8358846fc89a3c33ca52c70a8471f4999a01..b49ea0516488e203cae91f91a084ba6eb3eba9ea 100644 +index 2c723250eea3454d6b7aafb307612a2c06c42b73..4a21babeb23efe2b4bfd99ae3d08eb677b93bac9 100644 --- a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java +++ b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java -@@ -94,6 +94,11 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -92,6 +92,11 @@ public class PolarBear extends Animal implements NeutralMob { } return false; } @@ -315,7 +315,7 @@ index 590a8358846fc89a3c33ca52c70a8471f4999a01..b49ea0516488e203cae91f91a084ba6e @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/Pufferfish.java b/src/main/java/net/minecraft/world/entity/animal/Pufferfish.java -index 6f27a07b62f69350b1cee5f0170a7af1a3b99b9d..e42a7552d17f883b7116a180e408880c5fdb29d0 100644 +index 71929e5fe8851ad5620f25b6ed5058653231d769..988093b46a4c386f8d47a4c530b8e9f6f49efd0d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Pufferfish.java +++ b/src/main/java/net/minecraft/world/entity/animal/Pufferfish.java @@ -60,6 +60,11 @@ public class Pufferfish extends AbstractFish { @@ -331,10 +331,10 @@ index 6f27a07b62f69350b1cee5f0170a7af1a3b99b9d..e42a7552d17f883b7116a180e408880c @Override 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 f155cf36c59979464a0edcfd31d5e8433df60607..16f5c4425cc6ff3044c1d076030775e88a3e0a2c 100644 +index 0819503e8651afa9ff42df7077667eaa3a310df4..76ea5b3d0d70eb8bdbbbb4bf7bed31d0d7d712a3 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java +++ b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java -@@ -135,6 +135,11 @@ public class Rabbit extends Animal { +@@ -136,6 +136,11 @@ public class Rabbit extends Animal { } wasOnGround = onGround; } @@ -379,7 +379,7 @@ index e267e7b3b4ba96f5423327a336088942dcb4e14c..9d6765e2bd6bfdd39728bdd14cabbe4b @Override 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 4fc9b738d6e33fb804276c5897aed3ab2b0040c9..d3e8058e2fc45368e816482df178aa533c6edc0c 100644 +index 3ead4cc2fa875b8839410d7b4b5871e5b1d39074..f7863f9703c7ab5f2f1faac7a52311ed7ef79042 100644 --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java @@ -69,6 +69,11 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @@ -395,10 +395,10 @@ index 4fc9b738d6e33fb804276c5897aed3ab2b0040c9..d3e8058e2fc45368e816482df178aa53 @Override 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 d1ec00edb1782993b47a0837171fa80b8d1cb0b7..565276f556e2c7cf465b6bed53bdeac5ce4c4312 100644 +index 30687391baacd693fa3bb9e3efbd492d4e4d32c8..99248a9e2769a573839b199150da312d33344f95 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java -@@ -76,6 +76,11 @@ public class Squid extends WaterAnimal { +@@ -75,6 +75,11 @@ public class Squid extends WaterAnimal { vector.setX(cos * x - sine * z); vector.setZ(sine * x + cos * z); } @@ -411,10 +411,10 @@ index d1ec00edb1782993b47a0837171fa80b8d1cb0b7..565276f556e2c7cf465b6bed53bdeac5 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java -index 3bb43fac9b3405433b9d416b5154a5d49f673fc7..9979a1c75ad6d420575b80413a7b49c51c5ae5c1 100644 +index 6295c88832dd2f4ceec67f4f4a3477629494ccf7..f570600ca77b1b48e879198095ea54e692f3d243 100644 --- a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java +++ b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java -@@ -65,6 +65,11 @@ public class TropicalFish extends AbstractSchoolingFish { +@@ -64,6 +64,11 @@ public class TropicalFish extends AbstractSchoolingFish { public boolean isControllable() { return level.purpurConfig.tropicalFishControllable; } @@ -427,10 +427,10 @@ index 3bb43fac9b3405433b9d416b5154a5d49f673fc7..9979a1c75ad6d420575b80413a7b49c5 public static String getPredefinedName(int variant) { diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -index 0148a83cbd1e60be227f500e3f3bf3a89632b556..89a95622465a203efcecaf4c46e5b5e0419f84d3 100644 +index bd370b91e482913971816dac5f04f494c3951563..54ad776603158f101c0199395f70dadb80301a8d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -@@ -101,6 +101,11 @@ public class Turtle extends Animal { +@@ -99,6 +99,11 @@ public class Turtle extends Animal { public boolean isControllable() { return level.purpurConfig.turtleControllable; } @@ -443,10 +443,10 @@ index 0148a83cbd1e60be227f500e3f3bf3a89632b556..89a95622465a203efcecaf4c46e5b5e0 public void setHomePos(BlockPos pos) { 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 5a7a8e3b31f4598216ebeaef12cfb377cfbd771b..0336bc717b22a2747cb233268dc5ececab56cee2 100644 +index 851dfd17602767556e34059d1282de3c6191480e..e9a13c45024ad7683bd6e1afc3cd38825036305c 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -@@ -119,6 +119,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -122,6 +122,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { public boolean isControllable() { return level.purpurConfig.wolfControllable; } @@ -459,10 +459,10 @@ index 5a7a8e3b31f4598216ebeaef12cfb377cfbd771b..0336bc717b22a2747cb233268dc5ecec @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index 80ee4883d72d8beaa73865740eec8fc20becd0af..12a227990593c471238054570ae9a103f4da5d84 100644 +index 46d57c1a852a99db3ddb0ccd10f6229e223e0a32..7aa48291644d99bf713750478e172832f21290b0 100644 --- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -@@ -117,6 +117,11 @@ public class Axolotl extends Animal implements LerpingModel, Bucketable { +@@ -119,6 +119,11 @@ public class Axolotl extends Animal implements LerpingModel, Bucketable { protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur } @@ -475,10 +475,10 @@ index 80ee4883d72d8beaa73865740eec8fc20becd0af..12a227990593c471238054570ae9a103 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index 07e2a7839d8aaf2915c9b8ba74653870f11def88..0dca918e98182faf90f09d2ecf8985796d7b2fb5 100644 +index ea82e3f2dc219c11de7841358a6d2e1408825387..c5a86e91465e725fd11d19fd668c1ba6bbe981ac 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -@@ -89,6 +89,11 @@ public class Goat extends Animal { +@@ -84,6 +84,11 @@ public class Goat extends Animal { public boolean isControllable() { return level.purpurConfig.goatControllable; } @@ -589,10 +589,10 @@ index a91152df3d443d70b1aa9aff97b3746e0331c0a6..9f7203608e15fdce1bfbaf4198387687 @Override 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 7059b66fe81ffd3f757b595ae107ec69222db8e7..98119cf72e7d808d9f3b0ac808c0f286990d2279 100644 +index 2b72dc5c76fe717bd8643a6ac45fdbb8d36bd632..7041154cf1c8fa279ab8fa9faaa3b7416e0f7f42 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -@@ -116,6 +116,21 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { +@@ -115,6 +115,21 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { public boolean isSaddled() { return super.isSaddled() || (isTamed() && getSwag() != null); } @@ -719,10 +719,10 @@ index 77d05979331af91a1fbe619d1c26fa883146add8..48b72eb4051d612648a1978b38299c0c public static AttributeSupplier.Builder createAttributes() { 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 9846b882ae67131f3602845419c52c1350a214ce..4e44be78614107932af183dae144a21b0b260c97 100644 +index 24fb7e822ed91581f09e85ac92ad58088bd8980b..8508c1ce86d9a16cdafaf93817789a78c7787d06 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -@@ -159,6 +159,11 @@ public class EnderDragon extends Mob implements Enemy { +@@ -157,6 +157,11 @@ public class EnderDragon extends Mob implements Enemy { public double getMaxY() { return level.purpurConfig.enderDragonMaxY; } @@ -735,10 +735,10 @@ index 9846b882ae67131f3602845419c52c1350a214ce..4e44be78614107932af183dae144a21b public static AttributeSupplier.Builder createAttributes() { 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 4b541ebd4e9d0ef178aacd3006393ff114a30e79..8480ebae938abd4f11ad82fd11e3a5ad405aa180 100644 +index c475a8f53e7076f7655cebc3ac420eabee166674..a39ed2d5c52d5555ebc9c595c9541a5561b61f26 100644 --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -@@ -213,6 +213,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -212,6 +212,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob skull.setPosRaw(headX, headY, headZ); level.addFreshEntity(skull); } @@ -750,7 +750,7 @@ index 4b541ebd4e9d0ef178aacd3006393ff114a30e79..8480ebae938abd4f11ad82fd11e3a5ad // Purpur end @Override -@@ -417,7 +422,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -416,7 +421,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob this.setInvulnerableTicks(i); if (this.tickCount % 10 == 0) { @@ -792,7 +792,7 @@ index 790d4abbc8e0b288e20e72e63f8190e938e2fecb..b9ee6fdaad09c92fdeea2e5be6068182 @Override 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 3451d4b2427978c8ff2893fad9f2c0cfc8c5f472..415df99f90ce63f13a89cfd02ee594d280f01785 100644 +index 1476372a78092b103c037028f08cb1eae9464706..9921fd8278d14deeae9d61101f6800be58412948 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java @@ -138,6 +138,11 @@ public class Creeper extends Monster implements PowerableMob { @@ -808,10 +808,10 @@ index 3451d4b2427978c8ff2893fad9f2c0cfc8c5f472..415df99f90ce63f13a89cfd02ee594d2 @Override 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 6c89aa825b51fd1054bb04d4a6a23778e90bd7c6..0217fb932379e5789dce932b6af90f1e97fb95de 100644 +index 1aa7877879f4ec884067103abcba81a70ef82a49..208dfda498cafc588f88b0b9fa53da85aaed2298 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java +++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java -@@ -84,6 +84,16 @@ public class Drowned extends Zombie implements RangedAttackMob { +@@ -82,6 +82,16 @@ public class Drowned extends Zombie implements RangedAttackMob { public boolean isControllable() { return level.purpurConfig.drownedControllable; } @@ -845,10 +845,10 @@ index 7e79fe61e4fd0d26f62a0515c437370ccb0abf58..25fab7497a80a8fa65bd9cd9bdb0cd49 public static AttributeSupplier.Builder createAttributes() { 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 1af2aa7d2a3e6a21cd95b6c6f9a32d155c159f05..732fb89ab0405373a782eec9807507f0f3f08238 100644 +index e1d6996944a48d55b3ad5125ab6790e22c905024..cd35be1b3bf6056315c901243777115e2e13e5a9 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -103,6 +103,11 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -102,6 +102,11 @@ public class EnderMan extends Monster implements NeutralMob { public boolean isControllable() { return level.purpurConfig.endermanControllable; } @@ -861,10 +861,10 @@ index 1af2aa7d2a3e6a21cd95b6c6f9a32d155c159f05..732fb89ab0405373a782eec9807507f0 @Override 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 59ccb6ff28d888874ffb380bda9dbb3ded1d76ed..6d47413b56b9d8b195b6087e39048b6ad5ce477f 100644 +index 97b4342af7232bdf89382bda6a5ea50f5882cedc..2d43bdae159f1345f1f50bb9b0c5aebffa33ed96 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Endermite.java +++ b/src/main/java/net/minecraft/world/entity/monster/Endermite.java -@@ -51,6 +51,11 @@ public class Endermite extends Monster { +@@ -52,6 +52,11 @@ public class Endermite extends Monster { public boolean isControllable() { return level.purpurConfig.endermiteControllable; } @@ -877,7 +877,7 @@ index 59ccb6ff28d888874ffb380bda9dbb3ded1d76ed..6d47413b56b9d8b195b6087e39048b6a @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 -index 4ed00e61227e2a50a0a80834e2d6c7ad6c691284..9619f576f83924de5d25be2402137a10790f6f1e 100644 +index 169a19b605a4b7edda0d1d04e83d9bb5ea554b99..1641d5083cad8b7cd62fc1168834ff99b5239c5a 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Evoker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Evoker.java @@ -63,6 +63,11 @@ public class Evoker extends SpellcasterIllager { @@ -982,7 +982,7 @@ index 98c85e31a2238cbfa31c12214ade49c4ba181702..171e2fef10ac75dd4585a82057edb445 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java b/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java -index d111d6afb7c0937e48f7d212dec5f2d4a1c0a673..d4ce48a99fad5e9a26f8e057d91c712b8d8623b0 100644 +index 3e9ab5db23799e67e28d7fc88d4c3ad96bc44fdc..a9c8dd788affd122d98bc9a2eef068c5fb9a58ba 100644 --- a/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java +++ b/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java @@ -47,6 +47,26 @@ public class MagmaCube extends Slime { @@ -1013,7 +1013,7 @@ index d111d6afb7c0937e48f7d212dec5f2d4a1c0a673..d4ce48a99fad5e9a26f8e057d91c712b public static AttributeSupplier.Builder createAttributes() { 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 60aab3964ebd180b52b57fba0705a63445a349bc..c6fc7042386c98debf9b6e4614aca99d391d7e38 100644 +index 79c2f0482a7adbd50e1063edf2839f4fb3ab0847..6df40b92a7006c8ad6a8d89c7d81a0f4326cad42 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java @@ -116,6 +116,21 @@ public class Phantom extends FlyingMob implements Enemy { @@ -1099,10 +1099,10 @@ index 9507e4817e62c749726e4cf9914f51da0aeaba71..545ca8ada7ef9cff3619d2a556ddbd01 @Override 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 0073cfb4b68f4a5938336c063c382ad4c14536d9..dd473dcd310e6af808bf3e90dc48bd19faf75fe1 100644 +index 46539619fedda76185dc40d24f74df0b93067d61..cfbbdea914eb55f5c772f68f6494ac90c1c4c0ea 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java +++ b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java -@@ -56,6 +56,11 @@ public class Silverfish extends Monster { +@@ -57,6 +57,11 @@ public class Silverfish extends Monster { public boolean isControllable() { return level.purpurConfig.silverfishControllable; } @@ -1131,10 +1131,10 @@ index e73644f453bed8523bfad47764018362a416b5ea..e239bcc4d4afe48e9fc204ad38d8bc76 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Slime.java b/src/main/java/net/minecraft/world/entity/monster/Slime.java -index 4ded6fed9a5f3fbe8721bebc4f1fdb33d282e6bc..d7779ad6b6ce502468f104e35a715bf8fc013cff 100644 +index 86d8150934769c886ad657877993e1b4d4ab6829..b1894c88682201ed5fca5e98bedab73b4b08a065 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Slime.java +++ b/src/main/java/net/minecraft/world/entity/monster/Slime.java -@@ -106,6 +106,37 @@ public class Slime extends Mob implements Enemy { +@@ -104,6 +104,37 @@ public class Slime extends Mob implements Enemy { } return true; // do not jump() in wasd controller, let vanilla controller handle } @@ -1172,7 +1172,7 @@ index 4ded6fed9a5f3fbe8721bebc4f1fdb33d282e6bc..d7779ad6b6ce502468f104e35a715bf8 // Purpur end @Override -@@ -134,9 +165,9 @@ public class Slime extends Mob implements Enemy { +@@ -132,9 +163,9 @@ public class Slime extends Mob implements Enemy { this.entityData.set(Slime.ID_SIZE, j); this.reapplyPosition(); this.refreshDimensions(); @@ -1217,10 +1217,10 @@ index b97862f653fe0aca93335fdd1ef0cf871626a58c..b54368f53d3cf87f35132f811f8a9179 public static boolean checkStraySpawnRules(EntityType type, ServerLevelAccessor world, MobSpawnType spawnReason, BlockPos pos, Random random) { 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 fc43b53e8a0c7674ec523536e615a4ee62ada61c..0ceeca25fddea15ba5860f2745dc37a29845cb3e 100644 +index f809b68b0250670c07a2e0ed0f62efa8499b133f..e3f7816bb261c7772d86bd117ce30a53e77f44d1 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Strider.java +++ b/src/main/java/net/minecraft/world/entity/monster/Strider.java -@@ -112,6 +112,11 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { +@@ -111,6 +111,11 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { public boolean isControllable() { return level.purpurConfig.striderControllable; } @@ -1233,7 +1233,7 @@ index fc43b53e8a0c7674ec523536e615a4ee62ada61c..0ceeca25fddea15ba5860f2745dc37a2 public static boolean checkStriderSpawnRules(EntityType type, LevelAccessor world, MobSpawnType spawnReason, BlockPos pos, Random random) { diff --git a/src/main/java/net/minecraft/world/entity/monster/Vex.java b/src/main/java/net/minecraft/world/entity/monster/Vex.java -index 66311fc3cf8f0ed50174bb834067d4365c393fef..b223b48215adcd57ea9656194df3b5673a82586b 100644 +index d154ce3119d231b8c8da299ec22e2a9b2bae6394..1614109a5492d46c26552f2f5e3a510d82e31dc1 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Vex.java +++ b/src/main/java/net/minecraft/world/entity/monster/Vex.java @@ -100,6 +100,11 @@ public class Vex extends Monster { @@ -1265,7 +1265,7 @@ index ddb0b32821aa6f61370ce8d262ce3d846c7ee9d0..ff62f5ed29a826c4dd53eb6fe04f5aa2 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Witch.java b/src/main/java/net/minecraft/world/entity/monster/Witch.java -index 8e643b22a2af74acfe2b6710586a40c19ddcc085..33d6aba40c6523cb271946bac98c6e84593a2c6b 100644 +index 7775f1428a455f0d52f43ed07102cb242f6d23ad..0359db7ccca286df046066b4a2356a50b8240a56 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Witch.java +++ b/src/main/java/net/minecraft/world/entity/monster/Witch.java @@ -74,6 +74,11 @@ public class Witch extends Raider implements RangedAttackMob { @@ -1313,7 +1313,7 @@ index a6aaffc41a39be4ae1da44d54a27d324927e47d0..a91ec2e385940b12bc41d9c09819c908 @Override 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 cd70d228a690485c7f379d0744262907d19fa080..6943933ef0e97f31fbbcedee4ff469bc6e7e49c0 100644 +index d88d8572f013f2487e6b523a5d7c4f3d9aef0bd4..28a73680800e672ff01d9a5949e87b776c94c536 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -119,6 +119,11 @@ public class Zombie extends Monster { @@ -1338,10 +1338,10 @@ index cd70d228a690485c7f379d0744262907d19fa080..6943933ef0e97f31fbbcedee4ff469bc @Override 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 b74a2dd32481dd2135b4aa4b860cf9e1b743af66..6309a40ce0d349a6e278d6584b056dc644a358ba 100644 +index c9d2938615a254fe76dc9fb8667b3f7dffdfe9bd..237ff13e88c2cdeda001500f8adc16b37efc2115 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -@@ -90,6 +90,16 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { +@@ -94,6 +94,16 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { public boolean isControllable() { return level.purpurConfig.zombieVillagerControllable; } @@ -1359,7 +1359,7 @@ index b74a2dd32481dd2135b4aa4b860cf9e1b743af66..6309a40ce0d349a6e278d6584b056dc6 @Override 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 af60b2666529fbf83578672e9a4a03d4783602fe..e743fb4de0647088d06ec53291496e0d2f44fe44 100644 +index c2cd88e8ef4b543635b02e1fdd2ac257f64a05c2..43e8eac09accc1f5f9d4b821ccff1a7a92b24121 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java @@ -74,6 +74,11 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { @@ -1432,10 +1432,10 @@ index 8ad63ae82a8b6a26c03e53b6d043128a8e038863..ec532ba1ccb0dbe50b91ba698a4f30d5 public static AttributeSupplier.Builder createAttributes() { 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 dd37faff29a8c8199fd0c6730d9bdc79ad97e254..e413888ee04d6b236d2f7b8323e36d02dfe6b854 100644 +index c6d232f73dd1cfe5c88848e5a89f8716c3b7dee4..d55d0a1a188813f83bc99149d38b5d4339cc9d9b 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -173,6 +173,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -175,6 +175,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); } @@ -1448,10 +1448,10 @@ index dd37faff29a8c8199fd0c6730d9bdc79ad97e254..e413888ee04d6b236d2f7b8323e36d02 @Override 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 ac17d5e9fa110c5de297be2a762631ce03e081eb..ab7beb6ddccf9e392aa791fee9280af814695259 100644 +index 2ae9a5da91ad20f1b566a686dcc8d4f14c62ecc5..8bfa041297db79e8f1452ce7059d1536a6e2854f 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -@@ -82,6 +82,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill +@@ -81,6 +81,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill public boolean isControllable() { return level.purpurConfig.wanderingTraderControllable; } diff --git a/patches/server/0009-Barrels-and-enderchests-6-rows.patch b/patches/server/0009-Barrels-and-enderchests-6-rows.patch index 7b4c8779d..263281432 100644 --- a/patches/server/0009-Barrels-and-enderchests-6-rows.patch +++ b/patches/server/0009-Barrels-and-enderchests-6-rows.patch @@ -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 -index 6b4cb3a94dc998e7a087c888876a15c36763bfd0..0c7afc7787bf9303a8f8a7b4125a3bc45b70ccff 100644 +index b66821b421372a503ae2a4963e67a53d9a0cc537..ecee40ef769ab9ef54cb41d8421855200dea7194 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -1168,6 +1168,27 @@ public abstract class PlayerList { @@ -37,10 +37,10 @@ index 6b4cb3a94dc998e7a087c888876a15c36763bfd0..0c7afc7787bf9303a8f8a7b4125a3bc4 // Paper start 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 a706ab000eba2d996862a73a3bd38f1971b31b82..daf47163bcb3e2ef260b9af5baf2e4409d75cef2 100644 +index 54b0e70dc8d89ebcad345b414c759d70d47dd4a2..60120fcfc2127a53d90ce5bd3a819eb76801c9e8 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -180,6 +180,7 @@ public abstract class Player extends LivingEntity { +@@ -181,6 +181,7 @@ public abstract class Player extends LivingEntity { // Paper start public boolean affectsSpawning = true; // Paper end @@ -198,7 +198,7 @@ index 5a47d58071b83ea911e4cb5e1cc5468801ad0d55..673052e683520976399f38569e35faad @Override diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java -index 60fa587ce17e138d2baf8959c26e25ed1db17a4a..c6792356261cf95d838be9bcf9ea2d2f9f182bed 100644 +index c50813f3a3ef78ce053249ca0c93360c0bc22e8d..3c8027dafd02d3f98054c0ab79ef124953f80ff7 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java @@ -165,8 +165,19 @@ public class CraftContainer extends AbstractContainerMenu { @@ -223,7 +223,7 @@ index 60fa587ce17e138d2baf8959c26e25ed1db17a4a..c6792356261cf95d838be9bcf9ea2d2f case DISPENSER: case DROPPER: diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java -index 396a4ae3d5a829eda78ef98561333aea300aa722..91478d614a56d1ac371187515d4c92b2a373b65c 100644 +index 30ac442049088200e9ab77a561c59cbc58aaa28f..fb3c3c32b89e6a99b50bd04163d29892bbd08256 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java @@ -81,7 +81,7 @@ public class CraftInventory implements Inventory { diff --git a/patches/server/0010-Llama-API.patch b/patches/server/0010-Llama-API.patch index 21916ecd9..0ccd71cd0 100644 --- a/patches/server/0010-Llama-API.patch +++ b/patches/server/0010-Llama-API.patch @@ -25,10 +25,10 @@ index 721971f7618751a2e95f1c49fdc48a9c0c672cab..7b141c495095afcd9c8b04c059d692e8 double d = this.llama.distanceToSqr(this.llama.getCaravanHead()); 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 -index 98119cf72e7d808d9f3b0ac808c0f286990d2279..f6bd1eff78b3c879ecc439bab3b5aa7674e74044 100644 +index 7041154cf1c8fa279ab8fa9faaa3b7416e0f7f42..93c6e0d538dfa796b5a5b4f57d3f76fa2eef77ab 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -@@ -69,6 +69,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { +@@ -68,6 +68,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { private Llama caravanHead; @Nullable private Llama caravanTail; @@ -36,7 +36,7 @@ index 98119cf72e7d808d9f3b0ac808c0f286990d2279..f6bd1eff78b3c879ecc439bab3b5aa76 public Llama(EntityType type, Level world) { super(type, world); -@@ -165,7 +166,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { +@@ -164,7 +165,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { if (!this.inventory.getItem(1).isEmpty()) { nbt.put("DecorItem", this.inventory.getItem(1).save(new CompoundTag())); } @@ -45,7 +45,7 @@ index 98119cf72e7d808d9f3b0ac808c0f286990d2279..f6bd1eff78b3c879ecc439bab3b5aa76 } @Override -@@ -177,6 +178,12 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { +@@ -176,6 +177,12 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { this.inventory.setItem(1, ItemStack.of(nbt.getCompound("DecorItem"))); } @@ -58,7 +58,7 @@ index 98119cf72e7d808d9f3b0ac808c0f286990d2279..f6bd1eff78b3c879ecc439bab3b5aa76 this.updateContainerEquipment(); } -@@ -516,6 +523,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { +@@ -515,6 +522,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { public void leaveCaravan() { if (this.caravanHead != null) { @@ -66,7 +66,7 @@ index 98119cf72e7d808d9f3b0ac808c0f286990d2279..f6bd1eff78b3c879ecc439bab3b5aa76 this.caravanHead.caravanTail = null; } -@@ -523,6 +531,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { +@@ -522,6 +530,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { } public void joinCaravan(Llama llama) { @@ -74,7 +74,7 @@ index 98119cf72e7d808d9f3b0ac808c0f286990d2279..f6bd1eff78b3c879ecc439bab3b5aa76 this.caravanHead = llama; this.caravanHead.caravanTail = this; } -@@ -540,6 +549,13 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { +@@ -539,6 +548,13 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { return this.caravanHead; } diff --git a/patches/server/0011-AFK-API.patch b/patches/server/0011-AFK-API.patch index 66228a800..2fd67a366 100644 --- a/patches/server/0011-AFK-API.patch +++ b/patches/server/0011-AFK-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] AFK API diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 652f7207edb51e2523caaced2bc8bdd98f884ecf..60f28bc4bc0453cf3a87ae992275c0cb1c6c881f 100644 +index 2ec7392b94e6351190a72e59fac49a883a058752..b2e9d6a2ee654caa6e129d63a6e23f88252ad35d 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1969,8 +1969,58 @@ public class ServerPlayer extends Player { +@@ -1967,8 +1967,58 @@ public class ServerPlayer extends Player { public void resetLastActionTime() { this.lastActionTime = Util.getMillis(); @@ -68,7 +68,7 @@ index 652f7207edb51e2523caaced2bc8bdd98f884ecf..60f28bc4bc0453cf3a87ae992275c0cb 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 -index 392468375ef80b8c22bf94e336ec96d47177adac..2b83c3b7e9bdd7069c0bc49365b5743f21179eb6 100644 +index d61e30e19c1144a3610f92028c047e0f11a13aa9..1646852179a41da2380b0b67cbb183d287a07ebf 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -292,6 +292,20 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser @@ -105,7 +105,7 @@ index 392468375ef80b8c22bf94e336ec96d47177adac..2b83c3b7e9bdd7069c0bc49365b5743f this.player.resetLastActionTime(); // CraftBukkit - SPIGOT-854 this.disconnect(new TranslatableComponent("multiplayer.disconnect.idling"), org.bukkit.event.player.PlayerKickEvent.Cause.IDLING); // Paper - kick event cause } -@@ -673,6 +693,8 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -667,6 +687,8 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser this.lastYaw = to.getYaw(); this.lastPitch = to.getPitch(); @@ -114,16 +114,16 @@ index 392468375ef80b8c22bf94e336ec96d47177adac..2b83c3b7e9bdd7069c0bc49365b5743f // Skip the first time we do this if (true) { // Spigot - don't skip any move events Location oldTo = to.clone(); -@@ -1443,7 +1465,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -1439,7 +1461,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser if (!this.player.isChangingDimension() && d11 > org.spigotmc.SpigotConfig.movedWronglyThreshold && !this.player.isSleeping() && !this.player.gameMode.isCreative() && this.player.gameMode.getGameModeForPlayer() != GameType.SPECTATOR) { // Spigot - flag1 = true; // Paper - diff on change, this should be moved wrongly + flag2 = true; // Paper - diff on change, this should be moved wrongly - ServerGamePacketListenerImpl.LOGGER.warn("{} moved wrongly!", this.player.getName().getString()); + ServerGamePacketListenerImpl.LOGGER.warn("{} moved wrongly!, ({})", this.player.getName().getString(), d11); // Purpur } this.player.absMoveTo(d0, d1, d2, f, f1); -@@ -1493,6 +1515,8 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -1489,6 +1511,8 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser this.lastYaw = to.getYaw(); this.lastPitch = to.getPitch(); @@ -182,10 +182,10 @@ index e752c83df50fb9b670ecea2abc95426c2a009b6f..baa4f9026d31de92210300ecb8ee8c1b if (baseEntity == null) { if (this.isCombat && (!targetEntity.canBeSeenAsEnemy() || targetEntity.level.getDifficulty() == Difficulty.PEACEFUL)) { 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 daf47163bcb3e2ef260b9af5baf2e4409d75cef2..dc9a7d1f68b9208d15358b4c3d8e953a1ebed260 100644 +index 60120fcfc2127a53d90ce5bd3a819eb76801c9e8..eaadaa3a20d05f020d683a418fc0eab3e2bbac77 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -195,6 +195,13 @@ public abstract class Player extends LivingEntity { +@@ -196,6 +196,13 @@ public abstract class Player extends LivingEntity { // Purpur start public abstract void resetLastActionTime(); @@ -213,7 +213,7 @@ index 1f4b72a0aca200b2e0860449c718e6e607d2fc47..e1dd8932594780b07db13f68efa117eb if (range < 0.0D || d < range * range) { return true; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index b35a09b635315cce408a86f7fb6dbad7911116ae..5fc7354df359c77eecac4873f00abf9b14d73f40 100644 +index 57458fb9049518e568d22af7c53fa8074001361e..b1b3852fd65a6de0ebf55d121d34a63b8fffacbc 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -435,10 +435,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -229,7 +229,7 @@ index b35a09b635315cce408a86f7fb6dbad7911116ae..5fc7354df359c77eecac4873f00abf9b name = getName(); } - this.getHandle().listName = name.equals(getName()) ? null : CraftChatMessage.fromStringOrNull(name); -+ this.getHandle().listName = name.equals(getName()) ? null : useMM ? io.papermc.paper.adventure.PaperAdventure.asVanilla(net.kyori.adventure.text.minimessage.MiniMessage.get().parse(name)) : CraftChatMessage.fromStringOrNull(name); // Purpur ++ this.getHandle().listName = name.equals(getName()) ? null : useMM ? io.papermc.paper.adventure.PaperAdventure.asVanilla(net.kyori.adventure.text.minimessage.MiniMessage.miniMessage().deserialize(name)) : CraftChatMessage.fromStringOrNull(name); // Purpur for (ServerPlayer player : (List) server.getHandle().players) { if (player.getBukkitEntity().canSee(this)) { player.connection.send(new ClientboundPlayerInfoPacket(ClientboundPlayerInfoPacket.Action.UPDATE_DISPLAY_NAME, this.getHandle())); diff --git a/patches/server/0012-Bring-back-server-name.patch b/patches/server/0012-Bring-back-server-name.patch index 9016350c9..377430295 100644 --- a/patches/server/0012-Bring-back-server-name.patch +++ b/patches/server/0012-Bring-back-server-name.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Bring back server name diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java -index f944e6beafc7876ed9c6923a22f58d82967b77cb..e1c7b7a659e56fa5b3a1f52cb2ccc99bd95022b9 100644 +index ebfaa8d5de5b905bd2dd7778728b8c9939d01252..8153f1aa510474d2f831799a1c1495589eca0b14 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java -@@ -18,6 +18,7 @@ public class DedicatedServerProperties extends Settings brain; // CraftBukkit start public int expToDrop; @@ -16,7 +16,7 @@ index 8f8fc60f33176362c26aa0730e24e850929df618..456341b5ed16e72927a9fb8cb452de63 public boolean forceDrops; public ArrayList drops = new ArrayList(); public final org.bukkit.craftbukkit.attribute.CraftAttributeMap craftAttributes; -@@ -349,8 +350,8 @@ public abstract class LivingEntity extends Entity { +@@ -352,8 +353,8 @@ public abstract class LivingEntity extends Entity { this.tryAddSoulSpeed(); } @@ -27,7 +27,7 @@ index 8f8fc60f33176362c26aa0730e24e850929df618..456341b5ed16e72927a9fb8cb452de63 if (!landedState.isAir()) { double d1 = Math.min((double) (0.2F + f / 15.0F), 2.5D); -@@ -1933,7 +1934,7 @@ public abstract class LivingEntity extends Entity { +@@ -1936,7 +1937,7 @@ public abstract class LivingEntity extends Entity { MobEffectInstance mobeffect = this.getEffect(MobEffects.JUMP); float f2 = mobeffect == null ? 0.0F : (float) (mobeffect.getAmplifier() + 1); diff --git a/patches/server/0015-Lagging-threshold.patch b/patches/server/0015-Lagging-threshold.patch index 5815c3083..b512f8f53 100644 --- a/patches/server/0015-Lagging-threshold.patch +++ b/patches/server/0015-Lagging-threshold.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Lagging threshold diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 61526c349ad91742e3d05f49e658ffd293a450a5..3e68a5d2a9f187025952a5168a2c44df23565bb0 100644 +index e741c1b1d34d85c69cde76f43283728219c188ff..e0e9d76519738a74ab30df077150967e0175ea59 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -304,6 +304,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop implements EntityTypeTest { +@@ -288,6 +288,16 @@ public class EntityType implements EntityTypeTest { return (EntityType) Registry.register(Registry.ENTITY_TYPE, id, (EntityType) type.build(id)); // CraftBukkit - decompile error } @@ -25,7 +25,7 @@ index 9bc568a2b0df13f55ee8670839b9e6a6b4f38c2d..ac29cea738d013b69c263dd4708966e5 public static ResourceLocation getKey(EntityType type) { return Registry.ENTITY_TYPE.getKey(type); } -@@ -451,6 +461,16 @@ public class EntityType implements EntityTypeTest { +@@ -455,6 +465,16 @@ public class EntityType implements EntityTypeTest { return this.category; } diff --git a/patches/server/0017-EMC-MonsterEggSpawnEvent.patch b/patches/server/0017-EMC-MonsterEggSpawnEvent.patch index fd35eeb5e..563e99589 100644 --- a/patches/server/0017-EMC-MonsterEggSpawnEvent.patch +++ b/patches/server/0017-EMC-MonsterEggSpawnEvent.patch @@ -5,10 +5,10 @@ Subject: [PATCH] EMC - MonsterEggSpawnEvent diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java -index ac29cea738d013b69c263dd4708966e59a7e5741..dfba853f14e1dd676cddc25f03d3bfcb87a01a38 100644 +index 787e473a937f3efbe355418fd98bbee0bf6aec43..e26faaf10a9250d1ab3cd5c3ed98702112b6dd29 100644 --- a/src/main/java/net/minecraft/world/entity/EntityType.java +++ b/src/main/java/net/minecraft/world/entity/EntityType.java -@@ -334,22 +334,40 @@ public class EntityType implements EntityTypeTest { +@@ -338,22 +338,40 @@ public class EntityType implements EntityTypeTest { @Nullable public Entity spawn(ServerLevel world, @Nullable ItemStack stack, @Nullable Player player, BlockPos pos, MobSpawnType spawnReason, boolean alignPosition, boolean invertY) { @@ -52,7 +52,7 @@ index ac29cea738d013b69c263dd4708966e59a7e5741..dfba853f14e1dd676cddc25f03d3bfcb // Paper end // Paper start - Call PreCreatureSpawnEvent org.bukkit.entity.EntityType type = org.bukkit.entity.EntityType.fromName(EntityType.getKey(this).getPath()); -@@ -368,6 +386,19 @@ public class EntityType implements EntityTypeTest { +@@ -372,6 +390,19 @@ public class EntityType implements EntityTypeTest { T t0 = this.create(worldserver, nbttagcompound, ichatbasecomponent, entityhuman, blockposition, enummobspawn, flag, flag1); if (t0 != null && op != null) op.accept(t0); // Paper diff --git a/patches/server/0018-Player-invulnerabilities.patch b/patches/server/0018-Player-invulnerabilities.patch index 94db1216e..a6db8aa23 100644 --- a/patches/server/0018-Player-invulnerabilities.patch +++ b/patches/server/0018-Player-invulnerabilities.patch @@ -5,10 +5,10 @@ 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 -index 60f28bc4bc0453cf3a87ae992275c0cb1c6c881f..4c401de49ab21b4f2f596185b61f1a60b4e92422 100644 +index b2e9d6a2ee654caa6e129d63a6e23f88252ad35d..d86def0cc42af5ccfef69ff43ffac7123753bc00 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -255,6 +255,7 @@ public class ServerPlayer extends Player { +@@ -253,6 +253,7 @@ public class ServerPlayer extends Player { // CraftBukkit end public PlayerNaturallySpawnCreaturesEvent playerNaturallySpawnedEvent; // Paper public boolean purpurClient = false; // Purpur @@ -16,7 +16,7 @@ index 60f28bc4bc0453cf3a87ae992275c0cb1c6c881f..4c401de49ab21b4f2f596185b61f1a60 public double lastEntitySpawnRadiusSquared; // Paper - optimise isOutsideRange, this field is in blocks public final com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet cachedSingleHashSet; // Paper -@@ -331,6 +332,7 @@ public class ServerPlayer extends Player { +@@ -329,6 +330,7 @@ public class ServerPlayer extends Player { this.bukkitPickUpLoot = true; this.maxHealthCache = this.getMaxHealth(); this.cachedSingleMobDistanceMap = new com.destroystokyo.paper.util.PooledHashSets.PooledObjectLinkedOpenHashSet<>(this); // Paper @@ -24,7 +24,7 @@ index 60f28bc4bc0453cf3a87ae992275c0cb1c6c881f..4c401de49ab21b4f2f596185b61f1a60 } // Paper start - Chunk priority public BlockPos getPointInFront(double inFront) { -@@ -1005,6 +1007,12 @@ public class ServerPlayer extends Player { +@@ -1003,6 +1005,12 @@ public class ServerPlayer extends Player { } @@ -37,7 +37,7 @@ index 60f28bc4bc0453cf3a87ae992275c0cb1c6c881f..4c401de49ab21b4f2f596185b61f1a60 @Override public boolean hurt(DamageSource source, float amount) { if (this.isInvulnerableTo(source)) { -@@ -1012,7 +1020,7 @@ public class ServerPlayer extends Player { +@@ -1010,7 +1018,7 @@ public class ServerPlayer extends Player { } else { boolean flag = this.server.isDedicatedServer() && this.isPvpAllowed() && "fall".equals(source.msgId); @@ -46,7 +46,7 @@ index 60f28bc4bc0453cf3a87ae992275c0cb1c6c881f..4c401de49ab21b4f2f596185b61f1a60 return false; } else { if (source instanceof EntityDamageSource) { -@@ -1185,6 +1193,7 @@ public class ServerPlayer extends Player { +@@ -1183,6 +1191,7 @@ public class ServerPlayer extends Player { } // Paper end @@ -54,7 +54,7 @@ index 60f28bc4bc0453cf3a87ae992275c0cb1c6c881f..4c401de49ab21b4f2f596185b61f1a60 return this; } } -@@ -1959,6 +1968,7 @@ public class ServerPlayer extends Player { +@@ -1957,6 +1966,7 @@ public class ServerPlayer extends Player { } public void sendTexturePack(String url, String hash, boolean required, @Nullable Component resourcePackPrompt) { @@ -62,7 +62,7 @@ index 60f28bc4bc0453cf3a87ae992275c0cb1c6c881f..4c401de49ab21b4f2f596185b61f1a60 this.connection.send(new ClientboundResourcePackPacket(url, hash, required, resourcePackPrompt)); } -@@ -2468,9 +2478,17 @@ public class ServerPlayer extends Player { +@@ -2466,9 +2476,17 @@ public class ServerPlayer extends Player { @Override public boolean isImmobile() { @@ -82,10 +82,10 @@ index 60f28bc4bc0453cf3a87ae992275c0cb1c6c881f..4c401de49ab21b4f2f596185b61f1a60 public Scoreboard getScoreboard() { 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 -index 2b83c3b7e9bdd7069c0bc49365b5743f21179eb6..ce19e2bb8a9b45c3ca134d1911d1c38647557242 100644 +index 1646852179a41da2380b0b67cbb183d287a07ebf..e755e0b0bb8191af917f4ec383d2aaf70775d508 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1966,12 +1966,21 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -1974,12 +1974,21 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser @Override public void handleResourcePackResponse(ServerboundResourcePackPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.getLevel()); @@ -108,7 +108,7 @@ index 2b83c3b7e9bdd7069c0bc49365b5743f21179eb6..ce19e2bb8a9b45c3ca134d1911d1c386 this.cserver.getPluginManager().callEvent(new PlayerResourcePackStatusEvent(this.getCraftPlayer(), packStatus)); // CraftBukkit // Paper end diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 0c7afc7787bf9303a8f8a7b4125a3bc45b70ccff..cb4af460cae665016e0a6ec7ff664830be41d5a5 100644 +index ecee40ef769ab9ef54cb41d8421855200dea7194..bd89d47db5fc4a7f40ee6e79366fb6d83a797f56 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -997,6 +997,8 @@ public abstract class PlayerList { @@ -121,7 +121,7 @@ index 0c7afc7787bf9303a8f8a7b4125a3bc45b70ccff..cb4af460cae665016e0a6ec7ff664830 return entityplayer1; } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 5fc7354df359c77eecac4873f00abf9b14d73f40..b0459c6b416ad4aec90b4fa44c894f7c592690ca 100644 +index b1b3852fd65a6de0ebf55d121d34a63b8fffacbc..ee935e3a3379f059031ded780ea59f2f8915c843 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -2740,5 +2740,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0019-Anvil-API.patch b/patches/server/0019-Anvil-API.patch index 1f8f69681..9dcaecf34 100644 --- a/patches/server/0019-Anvil-API.patch +++ b/patches/server/0019-Anvil-API.patch @@ -5,11 +5,11 @@ Subject: [PATCH] Anvil API diff --git a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java -index a8d1ffd70c539cac42df9f086e4e336990e5a383..415c0cd772f0bca5dcfa606b2dd3b034424ff911 100644 +index af199f8bb4e25b25653aa780fd02573b5a974904..90e1c28a5030ecf5fe1d5e6ff2a1685c3f4db84c 100644 --- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java +++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java -@@ -2,7 +2,11 @@ package net.minecraft.world.inventory; - +@@ -3,7 +3,11 @@ package net.minecraft.world.inventory; + import com.mojang.logging.LogUtils; import java.util.Iterator; import java.util.Map; +import net.minecraft.nbt.IntTag; @@ -18,9 +18,9 @@ index a8d1ffd70c539cac42df9f086e4e336990e5a383..415c0cd772f0bca5dcfa606b2dd3b034 +import net.minecraft.network.protocol.game.ClientboundContainerSetSlotPacket; +import net.minecraft.server.level.ServerPlayer; import net.minecraft.tags.BlockTags; - import net.minecraft.tags.Tag; import net.minecraft.world.entity.player.Inventory; -@@ -41,6 +45,8 @@ public class AnvilMenu extends ItemCombinerMenu { + import net.minecraft.world.entity.player.Player; +@@ -40,6 +44,8 @@ public class AnvilMenu extends ItemCombinerMenu { public int maximumRepairCost = 40; private CraftInventoryView bukkitEntity; // CraftBukkit end @@ -29,7 +29,7 @@ index a8d1ffd70c539cac42df9f086e4e336990e5a383..415c0cd772f0bca5dcfa606b2dd3b034 public AnvilMenu(int syncId, Inventory inventory) { this(syncId, inventory, ContainerLevelAccess.NULL); -@@ -59,12 +65,14 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -58,12 +64,14 @@ public class AnvilMenu extends ItemCombinerMenu { @Override protected boolean mayPickup(Player player, boolean present) { @@ -45,7 +45,7 @@ index a8d1ffd70c539cac42df9f086e4e336990e5a383..415c0cd772f0bca5dcfa606b2dd3b034 player.giveExperienceLevels(-this.cost.get()); } -@@ -115,6 +123,12 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -114,6 +122,12 @@ public class AnvilMenu extends ItemCombinerMenu { @Override public void createResult() { @@ -58,7 +58,7 @@ index a8d1ffd70c539cac42df9f086e4e336990e5a383..415c0cd772f0bca5dcfa606b2dd3b034 ItemStack itemstack = this.inputSlots.getItem(0); this.cost.set(1); -@@ -191,7 +205,7 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -190,7 +204,7 @@ public class AnvilMenu extends ItemCombinerMenu { int i2 = (Integer) map1.get(enchantment); i2 = l1 == i2 ? i2 + 1 : Math.max(i2, l1); @@ -67,7 +67,7 @@ index a8d1ffd70c539cac42df9f086e4e336990e5a383..415c0cd772f0bca5dcfa606b2dd3b034 if (this.player.getAbilities().instabuild || itemstack.is(Items.ENCHANTED_BOOK)) { flag3 = true; -@@ -203,7 +217,7 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -202,7 +216,7 @@ public class AnvilMenu extends ItemCombinerMenu { Enchantment enchantment1 = (Enchantment) iterator1.next(); if (enchantment1 != enchantment && !enchantment.isCompatibleWith(enchantment1)) { @@ -76,7 +76,7 @@ index a8d1ffd70c539cac42df9f086e4e336990e5a383..415c0cd772f0bca5dcfa606b2dd3b034 ++i; } } -@@ -274,6 +288,13 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -273,6 +287,13 @@ public class AnvilMenu extends ItemCombinerMenu { this.cost.set(this.maximumRepairCost - 1); // CraftBukkit } @@ -90,7 +90,7 @@ index a8d1ffd70c539cac42df9f086e4e336990e5a383..415c0cd772f0bca5dcfa606b2dd3b034 if (this.cost.get() >= this.maximumRepairCost && !this.player.getAbilities().instabuild) { // CraftBukkit itemstack1 = ItemStack.EMPTY; } -@@ -296,6 +317,12 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -295,6 +316,12 @@ public class AnvilMenu extends ItemCombinerMenu { org.bukkit.craftbukkit.event.CraftEventFactory.callPrepareAnvilEvent(this.getBukkitView(), itemstack1); // CraftBukkit sendAllDataToRemote(); // CraftBukkit - SPIGOT-6686: Always send completed inventory to stay in sync with client this.broadcastChanges(); diff --git a/patches/server/0020-Configurable-villager-brain-ticks.patch b/patches/server/0020-Configurable-villager-brain-ticks.patch index 9c479e02a..6a0207d53 100644 --- a/patches/server/0020-Configurable-villager-brain-ticks.patch +++ b/patches/server/0020-Configurable-villager-brain-ticks.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable villager brain ticks 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 e413888ee04d6b236d2f7b8323e36d02dfe6b854..3ec933905f247e23c4c13b21dbf6fe4018583c5d 100644 +index d55d0a1a188813f83bc99149d38b5d4339cc9d9b..2786df9e1ee9f7e774fef3d9f4bb3db3b9440b10 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -137,6 +137,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -139,6 +139,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler }, MemoryModuleType.MEETING_POINT, (entityvillager, villageplacetype) -> { return villageplacetype == PoiType.MEETING; }); @@ -16,7 +16,7 @@ index e413888ee04d6b236d2f7b8323e36d02dfe6b854..3ec933905f247e23c4c13b21dbf6fe40 public long nextGolemPanic = -1; // Pufferfish -@@ -151,6 +152,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -153,6 +154,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler this.getNavigation().setCanFloat(true); this.setCanPickUpLoot(true); this.setVillagerData(this.getVillagerData().setType(type).setProfession(VillagerProfession.NONE)); @@ -24,7 +24,7 @@ index e413888ee04d6b236d2f7b8323e36d02dfe6b854..3ec933905f247e23c4c13b21dbf6fe40 } // Purpur start -@@ -277,6 +279,10 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -279,6 +281,10 @@ public class Villager extends AbstractVillager implements ReputationEventHandler this.level.getProfiler().push("villagerBrain"); // Pufferfish start if (!inactive) { diff --git a/patches/server/0021-Alternative-Keepalive-Handling.patch b/patches/server/0021-Alternative-Keepalive-Handling.patch index a7d54e18f..819565c1c 100644 --- a/patches/server/0021-Alternative-Keepalive-Handling.patch +++ b/patches/server/0021-Alternative-Keepalive-Handling.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Alternative Keepalive Handling diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index ce19e2bb8a9b45c3ca134d1911d1c38647557242..96aa7a49663050e151385106ef23f64efdcc61de 100644 +index e755e0b0bb8191af917f4ec383d2aaf70775d508..893fdd70090b182f783529681edd5f35beeebad2 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -227,6 +227,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser @@ -38,7 +38,7 @@ index ce19e2bb8a9b45c3ca134d1911d1c38647557242..96aa7a49663050e151385106ef23f64e if (this.keepAlivePending) { if (!this.processedDisconnect && elapsedTime >= KEEPALIVE_LIMIT) { // check keepalive limit, don't fire if already disconnected ServerGamePacketListenerImpl.LOGGER.warn("{} was kicked due to keepalive timeout!", this.player.getScoreboardName()); // more info -@@ -3139,6 +3155,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -3156,6 +3172,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser @Override public void handleKeepAlive(ServerboundKeepAlivePacket packet) { diff --git a/patches/server/0022-Silk-touch-spawners.patch b/patches/server/0022-Silk-touch-spawners.patch index 4a9f3342d..6882d23a8 100644 --- a/patches/server/0022-Silk-touch-spawners.patch +++ b/patches/server/0022-Silk-touch-spawners.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Silk touch spawners diff --git a/src/main/java/io/papermc/paper/adventure/PaperAdventure.java b/src/main/java/io/papermc/paper/adventure/PaperAdventure.java -index 3661ac5e3bfdebb2911cb1b118942b9fc7884140..4622d42221f75206e1a7495c8d4896c3d6f35b34 100644 +index 85c9056f92711b985e251f0f06ed551d03deb562..c540694e24978e9e6119267d4f66df52bde02fd2 100644 --- a/src/main/java/io/papermc/paper/adventure/PaperAdventure.java +++ b/src/main/java/io/papermc/paper/adventure/PaperAdventure.java @@ -92,6 +92,7 @@ public final class PaperAdventure { @@ -13,9 +13,9 @@ index 3661ac5e3bfdebb2911cb1b118942b9fc7884140..4622d42221f75206e1a7495c8d4896c3 .build(); public static final LegacyComponentSerializer LEGACY_SECTION_UXRC = LegacyComponentSerializer.builder().flattener(FLATTENER).hexColors().useUnusualXRepeatedCharacterHexFormat().build(); + public static final LegacyComponentSerializer LEGACY_AMPERSAND = LegacyComponentSerializer.builder().character(LegacyComponentSerializer.AMPERSAND_CHAR).hexColors().build(); // Purpur + @Deprecated public static final PlainComponentSerializer PLAIN_COMPONENT = PlainComponentSerializer.builder().flattener(FLATTENER).build(); public static final PlainTextComponentSerializer PLAIN = PlainTextComponentSerializer.builder().flattener(FLATTENER).build(); - public static final GsonComponentSerializer GSON = GsonComponentSerializer.builder() diff --git a/src/main/java/net/minecraft/world/item/Items.java b/src/main/java/net/minecraft/world/item/Items.java index 20444c6887cbdd444b23bf018a6d63f22359e5e7..85329295afacad3edb6865846166aa56ebae0ed2 100644 --- a/src/main/java/net/minecraft/world/item/Items.java @@ -30,7 +30,7 @@ index 20444c6887cbdd444b23bf018a6d63f22359e5e7..85329295afacad3edb6865846166aa56 public static final Item CHEST = registerBlock(Blocks.CHEST, CreativeModeTab.TAB_DECORATIONS); public static final Item CRAFTING_TABLE = registerBlock(Blocks.CRAFTING_TABLE, CreativeModeTab.TAB_DECORATIONS); 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 130ffb06b12565efb35afb55b6da20b1b16f6f06..bc4646a7a72c33a3671115953a2bbd7cfe5d7d92 100644 +index 130ffb06b12565efb35afb55b6da20b1b16f6f06..4ebe35d522e43a847c6a7f6b4fa529092630823d 100644 --- a/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java +++ b/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java @@ -1,9 +1,19 @@ @@ -90,7 +90,7 @@ index 130ffb06b12565efb35afb55b6da20b1b16f6f06..bc4646a7a72c33a3671115953a2bbd7c + + String name = level.purpurConfig.silkTouchSpawnerName; + if (name != null && !name.isEmpty() && !name.equals("Spawner")) { -+ Component displayName = MiniMessage.get().parse(name, "mob", mobName); ++ Component displayName = MiniMessage.miniMessage().deserialize(name, net.kyori.adventure.text.minimessage.tag.resolver.Placeholder.component("mob", mobName)); + if (name.startsWith("")) { + displayName = displayName.decoration(ITALIC, false); + } @@ -102,7 +102,7 @@ index 130ffb06b12565efb35afb55b6da20b1b16f6f06..bc4646a7a72c33a3671115953a2bbd7c + if (lore != null && !lore.isEmpty()) { + ListTag list = new ListTag(); + for (String line : lore) { -+ Component lineComponent = MiniMessage.get().parse(line, "mob", mobName); ++ Component lineComponent = MiniMessage.miniMessage().deserialize(line, net.kyori.adventure.text.minimessage.tag.resolver.Placeholder.component("mob", mobName)); + if (line.startsWith("")) { + lineComponent = lineComponent.decoration(ITALIC, false); + } @@ -139,7 +139,7 @@ index 130ffb06b12565efb35afb55b6da20b1b16f6f06..bc4646a7a72c33a3671115953a2bbd7c // this.popExperience(worldserver, blockposition, i); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a4111896ba007d252cb6fed8824cb99d78727991..55c53f7ff2bc312ae8a34c44566521f563277a8c 100644 +index 93d89fb27044e5e97574122b0e7863694d245bf0..50b0cdb6c95fc076216b41018b2bd1a30a643efa 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -111,6 +111,38 @@ public class PurpurWorldConfig { diff --git a/patches/server/0023-MC-168772-Fix-Add-turtle-egg-block-options.patch b/patches/server/0023-MC-168772-Fix-Add-turtle-egg-block-options.patch index 326750e04..14263df16 100644 --- a/patches/server/0023-MC-168772-Fix-Add-turtle-egg-block-options.patch +++ b/patches/server/0023-MC-168772-Fix-Add-turtle-egg-block-options.patch @@ -5,11 +5,11 @@ Subject: [PATCH] MC-168772 Fix - Add turtle egg block options diff --git a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java -index 8033d2074d68635515b4737b4416ec9354a3edad..b942e7c85e6c8f9a7664d9e5bf93bcd79e0651f1 100644 +index 45d5133ff2303b9b44ccacbfb7919708cb50edd6..b1846a5c73f5be800ab1e4efe81e110e245b4726 100644 --- a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java +++ b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java -@@ -10,11 +10,15 @@ import net.minecraft.tags.BlockTags; - import net.minecraft.tags.Tag; +@@ -9,11 +9,15 @@ import net.minecraft.sounds.SoundSource; + import net.minecraft.tags.BlockTags; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.ExperienceOrb; @@ -24,7 +24,7 @@ index 8033d2074d68635515b4737b4416ec9354a3edad..b942e7c85e6c8f9a7664d9e5bf93bcd7 import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.BlockGetter; -@@ -187,6 +191,23 @@ public class TurtleEggBlock extends Block { +@@ -186,6 +190,23 @@ public class TurtleEggBlock extends Block { } private boolean canDestroyEgg(Level world, Entity entity) { @@ -50,7 +50,7 @@ index 8033d2074d68635515b4737b4416ec9354a3edad..b942e7c85e6c8f9a7664d9e5bf93bcd7 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 55c53f7ff2bc312ae8a34c44566521f563277a8c..a56f00a40b6db80f0164260914219afaed8f0cce 100644 +index 50b0cdb6c95fc076216b41018b2bd1a30a643efa..4d9f7a90928fd4a3dd514799df3661f4ceb2ca36 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -143,6 +143,15 @@ public class PurpurWorldConfig { diff --git a/patches/server/0025-Logger-settings-suppressing-pointless-logs.patch b/patches/server/0025-Logger-settings-suppressing-pointless-logs.patch index 8ab999afa..a0e97a1c7 100644 --- a/patches/server/0025-Logger-settings-suppressing-pointless-logs.patch +++ b/patches/server/0025-Logger-settings-suppressing-pointless-logs.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Logger settings (suppressing pointless logs) diff --git a/src/main/java/net/minecraft/server/PlayerAdvancements.java b/src/main/java/net/minecraft/server/PlayerAdvancements.java -index f7959fe8d5247504dd79a18010470d98781c7cfe..6f5b7650d45958284f7b5c675c1e32d4b7738494 100644 +index b16287a47870978706734b928b87f2357e91e3a1..048413655ef636b3dae687452fc5a95780058a22 100644 --- a/src/main/java/net/minecraft/server/PlayerAdvancements.java +++ b/src/main/java/net/minecraft/server/PlayerAdvancements.java @@ -186,6 +186,7 @@ public class PlayerAdvancements { @@ -17,10 +17,10 @@ index f7959fe8d5247504dd79a18010470d98781c7cfe..6f5b7650d45958284f7b5c675c1e32d4 } // CraftBukkit end diff --git a/src/main/java/net/minecraft/server/level/WorldGenRegion.java b/src/main/java/net/minecraft/server/level/WorldGenRegion.java -index 9b25d36fe5230e287d81b99be31b9eddd8e76002..298a19f7b2bd5733823afe1d0ac0b1effe37dcc6 100644 +index a24f605bd033f249a374e83ba094880106260eee..efe7ba93af0b44e6282e551d47763fa9ea3df077 100644 --- a/src/main/java/net/minecraft/server/level/WorldGenRegion.java +++ b/src/main/java/net/minecraft/server/level/WorldGenRegion.java -@@ -286,6 +286,7 @@ public class WorldGenRegion implements WorldGenLevel { +@@ -285,6 +285,7 @@ public class WorldGenRegion implements WorldGenLevel { return true; } else { @@ -29,7 +29,7 @@ index 9b25d36fe5230e287d81b99be31b9eddd8e76002..298a19f7b2bd5733823afe1d0ac0b1ef return false; } diff --git a/src/main/java/net/minecraft/stats/ServerRecipeBook.java b/src/main/java/net/minecraft/stats/ServerRecipeBook.java -index ecdac349efbea9e05ac66200c5d0f0385ad1349b..17c18d90f23477e31f98edf889b8b64b4b066fbf 100644 +index d13ed3069e944d138442ea440ac3eaf8d44c18d3..29ac7f202aa23f7e6fcdc9829af3d59875c92d4e 100644 --- a/src/main/java/net/minecraft/stats/ServerRecipeBook.java +++ b/src/main/java/net/minecraft/stats/ServerRecipeBook.java @@ -122,6 +122,7 @@ public class ServerRecipeBook extends RecipeBook { diff --git a/patches/server/0028-Zombie-horse-naturally-spawn.patch b/patches/server/0028-Zombie-horse-naturally-spawn.patch index b86e9ad12..45bc50bf8 100644 --- a/patches/server/0028-Zombie-horse-naturally-spawn.patch +++ b/patches/server/0028-Zombie-horse-naturally-spawn.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Zombie horse naturally spawn diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 2d2c1ac2c40605e9a6228c81e5e50a31a3e2c4af..ec3dcaff9406182b62d975d733ec572531cd1386 100644 +index 291ec6d665daf222150f05ccdf759b8166a718a9..b3c38d079e1365265c3d672484d408df76dfaf2d 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -768,9 +768,15 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -771,9 +771,15 @@ public class ServerLevel extends Level implements WorldGenLevel { boolean flag1 = this.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && this.random.nextDouble() < (double) difficultydamagescaler.getEffectiveDifficulty() * paperConfig.skeleHorseSpawnChance && !this.getBlockState(blockposition.below()).is(Blocks.LIGHTNING_ROD); // Paper if (flag1) { diff --git a/patches/server/0030-Rabbit-naturally-spawn-toast-and-killer.patch b/patches/server/0030-Rabbit-naturally-spawn-toast-and-killer.patch index f3ff73afa..b87dd1784 100644 --- a/patches/server/0030-Rabbit-naturally-spawn-toast-and-killer.patch +++ b/patches/server/0030-Rabbit-naturally-spawn-toast-and-killer.patch @@ -5,10 +5,10 @@ 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 -index 16f5c4425cc6ff3044c1d076030775e88a3e0a2c..a34fcda0ef72689d014ca8fd0a9131a66f25fb61 100644 +index 76ea5b3d0d70eb8bdbbbb4bf7bed31d0d7d712a3..5b30a1d34d7efb1a5c86ae187027313fec1fd700 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java +++ b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java -@@ -433,7 +433,11 @@ public class Rabbit extends Animal { +@@ -435,7 +435,11 @@ public class Rabbit extends Animal { if (!this.hasCustomName()) { this.setCustomName(new TranslatableComponent(Util.makeDescriptionId("entity", Rabbit.KILLER_BUNNY))); } @@ -20,7 +20,7 @@ index 16f5c4425cc6ff3044c1d076030775e88a3e0a2c..a34fcda0ef72689d014ca8fd0a9131a6 this.entityData.set(Rabbit.DATA_TYPE_ID, rabbitType); } -@@ -454,6 +458,16 @@ public class Rabbit extends Animal { +@@ -456,6 +460,16 @@ public class Rabbit extends Animal { } private int getRandomRabbitType(LevelAccessor world) { @@ -34,7 +34,7 @@ index 16f5c4425cc6ff3044c1d076030775e88a3e0a2c..a34fcda0ef72689d014ca8fd0a9131a6 + } + // Purpur end + - Biome biomebase = world.getBiome(this.blockPosition()); + Holder holder = world.getBiome(this.blockPosition()); int i = this.random.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/patches/server/0032-Tulips-change-fox-type.patch b/patches/server/0032-Tulips-change-fox-type.patch index 8ddc95a03..88abd68aa 100644 --- a/patches/server/0032-Tulips-change-fox-type.patch +++ b/patches/server/0032-Tulips-change-fox-type.patch @@ -5,10 +5,10 @@ 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 -index 4754ea923d3bbee130ec8eecf8e51b99e561c3e6..12e2e84e6d4d4975ee2240e6255eb5cc2c17a733 100644 +index 1e0239434fc6a9b39e2326d5ee98f01e9bcb263f..4b42d8047f70d23eed09b6210b447ae2a272af0a 100644 --- a/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.tags.Tag; +@@ -35,6 +35,7 @@ import net.minecraft.tags.ItemTags; import net.minecraft.util.Mth; import net.minecraft.world.DifficultyInstance; import net.minecraft.world.InteractionHand; @@ -16,7 +16,7 @@ index 4754ea923d3bbee130ec8eecf8e51b99e561c3e6..12e2e84e6d4d4975ee2240e6255eb5cc import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.AgeableMob; import net.minecraft.world.entity.Entity; -@@ -86,6 +87,7 @@ import net.minecraft.world.level.block.Blocks; +@@ -87,6 +88,7 @@ import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.CaveVines; import net.minecraft.world.level.block.SweetBerryBushBlock; import net.minecraft.world.level.block.state.BlockState; @@ -24,7 +24,7 @@ index 4754ea923d3bbee130ec8eecf8e51b99e561c3e6..12e2e84e6d4d4975ee2240e6255eb5cc import net.minecraft.world.level.pathfinder.BlockPathTypes; import net.minecraft.world.phys.Vec3; -@@ -378,6 +380,11 @@ public class Fox extends Animal { +@@ -380,6 +382,11 @@ public class Fox extends Animal { } private void setTargetGoals() { @@ -36,7 +36,7 @@ index 4754ea923d3bbee130ec8eecf8e51b99e561c3e6..12e2e84e6d4d4975ee2240e6255eb5cc if (this.getFoxType() == Fox.Type.RED) { this.targetSelector.addGoal(4, this.landTargetGoal); this.targetSelector.addGoal(4, this.turtleEggTargetGoal); -@@ -410,6 +417,7 @@ public class Fox extends Animal { +@@ -412,6 +419,7 @@ public class Fox extends Animal { public void setFoxType(Fox.Type type) { this.entityData.set(Fox.DATA_TYPE_ID, type.getId()); @@ -44,7 +44,7 @@ index 4754ea923d3bbee130ec8eecf8e51b99e561c3e6..12e2e84e6d4d4975ee2240e6255eb5cc } List getTrustedUUIDs() { -@@ -740,6 +748,29 @@ public class Fox extends Animal { +@@ -742,6 +750,29 @@ public class Fox extends Animal { return this.getTrustedUUIDs().contains(uuid); } diff --git a/patches/server/0033-Breedable-Polar-Bears.patch b/patches/server/0033-Breedable-Polar-Bears.patch index 45f380cdf..d4bdf5bb6 100644 --- a/patches/server/0033-Breedable-Polar-Bears.patch +++ b/patches/server/0033-Breedable-Polar-Bears.patch @@ -5,10 +5,10 @@ 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 -index b49ea0516488e203cae91f91a084ba6eb3eba9ea..1215d26bc383573e84f674c8d67768bfbe89da59 100644 +index 4a21babeb23efe2b4bfd99ae3d08eb677b93bac9..b370a0c392f69a1b42a4908ae012ee4c6bf6984d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java +++ b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java -@@ -99,6 +99,27 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -97,6 +97,27 @@ public class PolarBear extends Animal implements NeutralMob { public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.polarBearMaxHealth); } @@ -36,7 +36,7 @@ index b49ea0516488e203cae91f91a084ba6eb3eba9ea..1215d26bc383573e84f674c8d67768bf // Purpur end @Override -@@ -108,7 +129,7 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -106,7 +127,7 @@ public class PolarBear extends Animal implements NeutralMob { @Override public boolean isFood(ItemStack stack) { @@ -45,7 +45,7 @@ index b49ea0516488e203cae91f91a084ba6eb3eba9ea..1215d26bc383573e84f674c8d67768bf } @Override -@@ -118,6 +139,12 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -116,6 +137,12 @@ public class PolarBear extends Animal implements NeutralMob { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(1, new PolarBear.PolarBearMeleeAttackGoal()); this.goalSelector.addGoal(1, new PolarBear.PolarBearPanicGoal()); diff --git a/patches/server/0036-Cat-spawning-options.patch b/patches/server/0036-Cat-spawning-options.patch index fcee0088c..1393bb438 100644 --- a/patches/server/0036-Cat-spawning-options.patch +++ b/patches/server/0036-Cat-spawning-options.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Cat spawning options diff --git a/src/main/java/net/minecraft/world/entity/npc/CatSpawner.java b/src/main/java/net/minecraft/world/entity/npc/CatSpawner.java -index 436f9cb45ff5b83f55b12f291bed355fa12a0655..0784f6a0aa39c8e49b009f53d91432ff0a41e313 100644 +index bef89f40498f1dc18ce3abe492ed41fd697c12fd..9239ca35f4aa5ef1964c13b4d9e889b429bb1571 100644 --- a/src/main/java/net/minecraft/world/entity/npc/CatSpawner.java +++ b/src/main/java/net/minecraft/world/entity/npc/CatSpawner.java -@@ -30,7 +30,7 @@ public class CatSpawner implements CustomSpawner { +@@ -33,7 +33,7 @@ public class CatSpawner implements CustomSpawner { if (this.nextTick > 0) { return 0; } else { @@ -17,7 +17,7 @@ index 436f9cb45ff5b83f55b12f291bed355fa12a0655..0784f6a0aa39c8e49b009f53d91432ff Player player = world.getRandomPlayer(); if (player == null) { return 0; -@@ -63,9 +63,13 @@ public class CatSpawner implements CustomSpawner { +@@ -69,9 +69,13 @@ public class CatSpawner implements CustomSpawner { } private int spawnInVillage(ServerLevel world, BlockPos pos) { @@ -34,7 +34,7 @@ index 436f9cb45ff5b83f55b12f291bed355fa12a0655..0784f6a0aa39c8e49b009f53d91432ff if (list.size() < 5) { return this.spawnCat(pos, world); } -@@ -75,8 +79,11 @@ public class CatSpawner implements CustomSpawner { +@@ -81,8 +85,11 @@ public class CatSpawner implements CustomSpawner { } private int spawnInHut(ServerLevel world, BlockPos pos) { diff --git a/patches/server/0037-MC-147659-Fix-non-black-cats-spawning-in-swamp-huts.patch b/patches/server/0037-MC-147659-Fix-non-black-cats-spawning-in-swamp-huts.patch index 98cdd1126..db6cb3319 100644 --- a/patches/server/0037-MC-147659-Fix-non-black-cats-spawning-in-swamp-huts.patch +++ b/patches/server/0037-MC-147659-Fix-non-black-cats-spawning-in-swamp-huts.patch @@ -5,10 +5,10 @@ Subject: [PATCH] MC-147659 - Fix non black cats spawning in swamp huts diff --git a/src/main/java/net/minecraft/world/entity/npc/CatSpawner.java b/src/main/java/net/minecraft/world/entity/npc/CatSpawner.java -index 0784f6a0aa39c8e49b009f53d91432ff0a41e313..590915d1c6eacc296be4880e6712b100683420e5 100644 +index 9239ca35f4aa5ef1964c13b4d9e889b429bb1571..0c5dcaf1a0b2f7819cea09009bb84178c202e803 100644 --- a/src/main/java/net/minecraft/world/entity/npc/CatSpawner.java +++ b/src/main/java/net/minecraft/world/entity/npc/CatSpawner.java -@@ -92,8 +92,9 @@ public class CatSpawner implements CustomSpawner { +@@ -98,8 +98,9 @@ public class CatSpawner implements CustomSpawner { if (cat == null) { return 0; } else { diff --git a/patches/server/0039-Fix-cow-rotation-when-shearing-mooshroom.patch b/patches/server/0039-Fix-cow-rotation-when-shearing-mooshroom.patch index 3be43bdfc..b8ecce58d 100644 --- a/patches/server/0039-Fix-cow-rotation-when-shearing-mooshroom.patch +++ b/patches/server/0039-Fix-cow-rotation-when-shearing-mooshroom.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix cow rotation when shearing mooshroom diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index 94550588f4e40da3f43ecd227e044fcfafec6084..6784f73bf2c2dd9a71461c66199572a5af29aede 100644 +index 2846c17ddbb546d49407338f136e171a329b347e..d4237fce253b2414337344b327250c1db2b19dfa 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -@@ -203,7 +203,13 @@ public class MushroomCow extends Cow implements Shearable { +@@ -202,7 +202,13 @@ public class MushroomCow extends Cow implements Shearable { entitycow.moveTo(this.getX(), this.getY(), this.getZ(), this.getYRot(), this.getXRot()); entitycow.setHealth(this.getHealth()); diff --git a/patches/server/0042-Ender-dragon-always-drop-full-exp.patch b/patches/server/0042-Ender-dragon-always-drop-full-exp.patch index 25d91e223..b9ad7ad25 100644 --- a/patches/server/0042-Ender-dragon-always-drop-full-exp.patch +++ b/patches/server/0042-Ender-dragon-always-drop-full-exp.patch @@ -5,10 +5,10 @@ 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 -index 4e44be78614107932af183dae144a21b0b260c97..e6772a3c4cda03824ed6a34936e1639979e73a0e 100644 +index 8508c1ce86d9a16cdafaf93817789a78c7787d06..2c1381a2f0ba6d17f3d4a7c16e03fca263428cfb 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -@@ -714,7 +714,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -711,7 +711,7 @@ public class EnderDragon extends Mob implements Enemy { boolean flag = this.level.getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT); short short0 = 500; diff --git a/patches/server/0044-Allow-soil-to-moisten-from-water-directly-under-it.patch b/patches/server/0044-Allow-soil-to-moisten-from-water-directly-under-it.patch index 392e77d5b..0cc57eea6 100644 --- a/patches/server/0044-Allow-soil-to-moisten-from-water-directly-under-it.patch +++ b/patches/server/0044-Allow-soil-to-moisten-from-water-directly-under-it.patch @@ -5,20 +5,20 @@ Subject: [PATCH] Allow soil to moisten from water directly under it diff --git a/src/main/java/net/minecraft/world/level/block/FarmBlock.java b/src/main/java/net/minecraft/world/level/block/FarmBlock.java -index d0720d5e6612d98d1e86e33e8e6564e371595630..e102795a2464eac028b30977be8d99ceca2339f7 100644 +index 499eae5ab30921f49045dc73bd077941255f727a..f9c363a9148d30b1ecc8f744a7eaa131a9fd1428 100644 --- a/src/main/java/net/minecraft/world/level/block/FarmBlock.java +++ b/src/main/java/net/minecraft/world/level/block/FarmBlock.java -@@ -159,7 +159,7 @@ public class FarmBlock extends Block { +@@ -158,7 +158,7 @@ public class FarmBlock extends Block { } } - return false; + return ((ServerLevel) world).purpurConfig.farmlandGetsMoistFromBelow && world.getFluidState(pos.relative(Direction.DOWN)).is(FluidTags.WATER); // Purpur; - // Paper end - remove abstract block iteration } + @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6469e3c2976ef07fb10be7298b4126efbb46ea61..3440e9962a1fa3c9bafcf31417ffa13c84cffbc6 100644 +index 79e618ce91686370d439a5f6ed6a7f46f579ae74..620a68fbef5d3bc8894ee83d9c52ec8ba58e98d3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -148,6 +148,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0045-Minecart-settings-and-WASD-controls.patch b/patches/server/0045-Minecart-settings-and-WASD-controls.patch index 171baa240..c9805f90b 100644 --- a/patches/server/0045-Minecart-settings-and-WASD-controls.patch +++ b/patches/server/0045-Minecart-settings-and-WASD-controls.patch @@ -5,10 +5,10 @@ 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 -index 7d8853191eadf5f5d909dcc0269740d6b5e64b8d..ae40f50a33f676059738625773127ff9ae181be0 100644 +index d86def0cc42af5ccfef69ff43ffac7123753bc00..6721da5ec6ea4fc10cee4658b51e9a1b795eb8b9 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1018,6 +1018,7 @@ public class ServerPlayer extends Player { +@@ -1016,6 +1016,7 @@ public class ServerPlayer extends Player { if (this.isInvulnerableTo(source)) { return false; } else { @@ -17,10 +17,10 @@ index 7d8853191eadf5f5d909dcc0269740d6b5e64b8d..ae40f50a33f676059738625773127ff9 if (!flag && isSpawnInvulnerable() && source != DamageSource.OUT_OF_WORLD) { // Purpur 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 ad49dcc3473fbad306d21cbac4600574e80220a7..6b58b32711b3aba9b7de9e7dee6d02073dad3b7f 100644 +index 96a7bfd921e59f298f0ee502d356cc3552c30ce8..dac3f948481e444b3b641ab00eabca0cc8f17fa8 100644 --- a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java +++ b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java -@@ -108,11 +108,13 @@ public abstract class AbstractMinecart extends Entity { +@@ -107,11 +107,13 @@ public abstract class AbstractMinecart extends Entity { private double flyingY = 0.949999988079071D; // Paper - restore vanilla precision private double flyingZ = 0.949999988079071D; // Paper - restore vanilla precision public double maxSpeed = 0.4D; @@ -34,7 +34,7 @@ index ad49dcc3473fbad306d21cbac4600574e80220a7..6b58b32711b3aba9b7de9e7dee6d0207 } protected AbstractMinecart(EntityType type, Level world, double x, double y, double z) { -@@ -325,6 +327,12 @@ public abstract class AbstractMinecart extends Entity { +@@ -324,6 +326,12 @@ public abstract class AbstractMinecart extends Entity { @Override public void tick() { @@ -47,7 +47,7 @@ index ad49dcc3473fbad306d21cbac4600574e80220a7..6b58b32711b3aba9b7de9e7dee6d0207 // CraftBukkit start double prevX = this.getX(); double prevY = this.getY(); -@@ -488,16 +496,62 @@ public abstract class AbstractMinecart extends Entity { +@@ -487,16 +495,62 @@ public abstract class AbstractMinecart extends Entity { public void activateMinecart(int x, int y, int z, boolean powered) {} @@ -111,13 +111,13 @@ index ad49dcc3473fbad306d21cbac4600574e80220a7..6b58b32711b3aba9b7de9e7dee6d0207 this.move(MoverType.SELF, this.getDeltaMovement()); if (!this.onGround) { diff --git a/src/main/java/net/minecraft/world/item/MinecartItem.java b/src/main/java/net/minecraft/world/item/MinecartItem.java -index e05b13f512c64dd957842f25b5e17c68ee9f079b..7aad6f0c7b55d466bc4b966984b9fa6744948d6a 100644 +index 024124249fafa1ed2cf0257037f655ca8fb0aea2..f6c8def0d9d2f9580a172c3a36a7db0adfa20aeb 100644 --- a/src/main/java/net/minecraft/world/item/MinecartItem.java +++ b/src/main/java/net/minecraft/world/item/MinecartItem.java -@@ -121,8 +121,9 @@ public class MinecartItem extends Item { +@@ -120,8 +120,9 @@ public class MinecartItem extends Item { BlockState iblockdata = world.getBlockState(blockposition); - if (!iblockdata.is((Tag) BlockTags.RAILS)) { + if (!iblockdata.is(BlockTags.RAILS)) { - return InteractionResult.FAIL; - } else { + if (!world.purpurConfig.minecartPlaceAnywhere) return InteractionResult.FAIL; @@ -126,7 +126,7 @@ index e05b13f512c64dd957842f25b5e17c68ee9f079b..7aad6f0c7b55d466bc4b966984b9fa67 ItemStack itemstack = context.getItemInHand(); if (!world.isClientSide) { -@@ -150,6 +151,6 @@ public class MinecartItem extends Item { +@@ -149,6 +150,6 @@ public class MinecartItem extends Item { itemstack.shrink(1); return InteractionResult.sidedSuccess(world.isClientSide); @@ -135,10 +135,10 @@ index e05b13f512c64dd957842f25b5e17c68ee9f079b..7aad6f0c7b55d466bc4b966984b9fa67 } } diff --git a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java -index 05c46f3b3bce5225b819d86e6e06729a5093e092..b2dd2a211bdd1441eae67dd6bd93691964e07620 100644 +index 61590f2f04a797235299f1bd6b78a08f5bfe4a33..c8b85a89bc23139384dfada2e86edbadff9a3d61 100644 --- a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java +++ b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java -@@ -69,7 +69,7 @@ import net.minecraft.world.phys.shapes.VoxelShape; +@@ -71,7 +71,7 @@ import net.minecraft.world.phys.shapes.VoxelShape; public abstract class BlockBehaviour { protected static final Direction[] UPDATE_SHAPE_ORDER = new Direction[]{Direction.WEST, Direction.EAST, Direction.NORTH, Direction.SOUTH, Direction.DOWN, Direction.UP}; @@ -148,7 +148,7 @@ index 05c46f3b3bce5225b819d86e6e06729a5093e092..b2dd2a211bdd1441eae67dd6bd936919 protected final float explosionResistance; protected final boolean isRandomlyTicking; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3440e9962a1fa3c9bafcf31417ffa13c84cffbc6..78d2cb224260ebcf48bee46976cddacd69ab38e2 100644 +index 620a68fbef5d3bc8894ee83d9c52ec8ba58e98d3..e42af09797a6e0ad976c4f734f1ad714bc377383 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -94,6 +94,68 @@ public class PurpurWorldConfig { diff --git a/patches/server/0046-Disable-loot-drops-on-death-by-cramming.patch b/patches/server/0046-Disable-loot-drops-on-death-by-cramming.patch index 93346a0eb..d746b6633 100644 --- a/patches/server/0046-Disable-loot-drops-on-death-by-cramming.patch +++ b/patches/server/0046-Disable-loot-drops-on-death-by-cramming.patch @@ -5,10 +5,10 @@ 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 -index 456341b5ed16e72927a9fb8cb452de6369ed112e..d3d3b37c50ce36e411d2ca3e1c35c5b77f8fb8a6 100644 +index 86d3e06aa27357240c9c24672dc8430d8b02dd3a..292744702aef86b99cea45a161e9696f9ec1a608 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1722,6 +1722,7 @@ public abstract class LivingEntity extends Entity { +@@ -1725,6 +1725,7 @@ public abstract class LivingEntity extends Entity { this.dropEquipment(); // CraftBukkit - from below if (this.shouldDropLoot() && this.level.getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) { @@ -16,7 +16,7 @@ index 456341b5ed16e72927a9fb8cb452de6369ed112e..d3d3b37c50ce36e411d2ca3e1c35c5b7 this.dropFromLootTable(source, flag); // Paper start final boolean prev = this.clearEquipmentSlots; -@@ -1730,6 +1731,7 @@ public abstract class LivingEntity extends Entity { +@@ -1733,6 +1734,7 @@ public abstract class LivingEntity extends Entity { // Paper end this.dropCustomDeathLoot(source, i, flag); this.clearEquipmentSlots = prev; // Paper diff --git a/patches/server/0048-End-gateway-should-check-if-entity-can-use-portal.patch b/patches/server/0048-End-gateway-should-check-if-entity-can-use-portal.patch index bd3000788..5f6b0d110 100644 --- a/patches/server/0048-End-gateway-should-check-if-entity-can-use-portal.patch +++ b/patches/server/0048-End-gateway-should-check-if-entity-can-use-portal.patch @@ -5,10 +5,10 @@ Subject: [PATCH] End gateway should check if entity can use portal diff --git a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java -index bc028de0ac71e69e8d714db5f65286f306544bf1..500a4013ce525c0474fe3991457d4c2a50ceb7ed 100644 +index 4e435a16a16c703a2978f4dc82606b8710742670..a952f19530983ca9a72969ad25f9565a2a03688a 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java -@@ -176,6 +176,7 @@ public class TheEndGatewayBlockEntity extends TheEndPortalBlockEntity { +@@ -177,6 +177,7 @@ public class TheEndGatewayBlockEntity extends TheEndPortalBlockEntity { public static void teleportEntity(Level world, BlockPos pos, BlockState state, Entity entity, TheEndGatewayBlockEntity blockEntity) { if (world instanceof ServerLevel && !blockEntity.isCoolingDown()) { diff --git a/patches/server/0049-Fix-the-dead-lagging-the-server.patch b/patches/server/0049-Fix-the-dead-lagging-the-server.patch index d2e7b383a..c35ef649e 100644 --- a/patches/server/0049-Fix-the-dead-lagging-the-server.patch +++ b/patches/server/0049-Fix-the-dead-lagging-the-server.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix the dead lagging the server diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index c08506f7376d0b1ad1378d52febd667d761a977e..300ff27544957612d71267cef940c0d3d5e40e03 100644 +index 191d11db966255b515864a5430ddea40220217ef..475bfbe1b7781b30cab5d691ef55cc87b22eeaed 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -1770,6 +1770,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i +@@ -1775,6 +1775,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i this.yRotO = this.getYRot(); this.xRotO = this.getXRot(); this.setYHeadRot(yaw); // Paper - Update head rotation @@ -17,10 +17,10 @@ index c08506f7376d0b1ad1378d52febd667d761a977e..300ff27544957612d71267cef940c0d3 public void absMoveTo(double x, double y, double z) { diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index d3d3b37c50ce36e411d2ca3e1c35c5b77f8fb8a6..8df4992a2efe9a2c54a583825f75c63e1df04283 100644 +index 292744702aef86b99cea45a161e9696f9ec1a608..d92c4f31ec200db20f11f7613c37799a31dfc896 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -2939,7 +2939,7 @@ public abstract class LivingEntity extends Entity { +@@ -2942,7 +2942,7 @@ public abstract class LivingEntity extends Entity { } } diff --git a/patches/server/0050-Skip-events-if-there-s-no-listeners.patch b/patches/server/0050-Skip-events-if-there-s-no-listeners.patch index 5f15fe896..2b7333194 100644 --- a/patches/server/0050-Skip-events-if-there-s-no-listeners.patch +++ b/patches/server/0050-Skip-events-if-there-s-no-listeners.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Skip events if there's no listeners diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index f6b73f8c6638ddf79e45042f5c8902ea1f271f5c..5c65301b300867a5319c6da1576c488210923835 100644 +index b66afde6851ceaeccb84aea00cdc333dfbf3d4b0..c79c89bab8972a26c7a48f63ad20ac34b0fc8750 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java -@@ -389,6 +389,7 @@ public class Commands { +@@ -391,6 +391,7 @@ public class Commands { } private void runSync(ServerPlayer player, Collection bukkit, RootCommandNode rootcommandnode) { @@ -16,7 +16,7 @@ index f6b73f8c6638ddf79e45042f5c8902ea1f271f5c..5c65301b300867a5319c6da1576c4882 // Paper end - Async command map building new com.destroystokyo.paper.event.brigadier.AsyncPlayerSendCommandsEvent(player.getBukkitEntity(), (RootCommandNode) rootcommandnode, false).callEvent(); // Paper PlayerCommandSendEvent event = new PlayerCommandSendEvent(player.getBukkitEntity(), new LinkedHashSet<>(bukkit)); -@@ -401,6 +402,7 @@ public class Commands { +@@ -403,6 +404,7 @@ public class Commands { } } // CraftBukkit end diff --git a/patches/server/0052-Configurable-TPS-Catchup.patch b/patches/server/0052-Configurable-TPS-Catchup.patch index 7ba36529c..927a3c9d3 100644 --- a/patches/server/0052-Configurable-TPS-Catchup.patch +++ b/patches/server/0052-Configurable-TPS-Catchup.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable TPS Catchup diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 3e68a5d2a9f187025952a5168a2c44df23565bb0..768247fccab529d2d98e955b27899a37ab183e10 100644 +index e0e9d76519738a74ab30df077150967e0175ea59..67e888a41da7dc3bf47a5698ec251b135bd59426 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1277,7 +1277,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop= this.level.paperConfig.netherVoidTopDamageHeight)) { // Paper end diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 8df4992a2efe9a2c54a583825f75c63e1df04283..c791d60081a89e00d4bcc95453b9e2c65c47d8f7 100644 +index d92c4f31ec200db20f11f7613c37799a31dfc896..667827901c5b8479ebbbc89c25eec222e4906e7d 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -2431,7 +2431,7 @@ public abstract class LivingEntity extends Entity { +@@ -2434,7 +2434,7 @@ public abstract class LivingEntity extends Entity { @Override protected void outOfWorld() { diff --git a/patches/server/0062-Add-canSaveToDisk-to-Entity.patch b/patches/server/0062-Add-canSaveToDisk-to-Entity.patch index 08644dde8..daf3c8488 100644 --- a/patches/server/0062-Add-canSaveToDisk-to-Entity.patch +++ b/patches/server/0062-Add-canSaveToDisk-to-Entity.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add canSaveToDisk to Entity diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index f9ccf9d2d426ff895a7586a1aaf213c415f87b37..d6870a178e991bf2e07517596d12d8b3d198fa47 100644 +index 48bbfc5945b08fca6f42be58257cc0ece223a0e5..f283f292e3fb1f97a48d69c441eb5c0347ca344c 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -4448,5 +4448,9 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i +@@ -4487,5 +4487,9 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i public boolean processClick(InteractionHand hand) { return false; } @@ -19,10 +19,10 @@ index f9ccf9d2d426ff895a7586a1aaf213c415f87b37..d6870a178e991bf2e07517596d12d8b3 // Purpur end } 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 72287c44fb4be9cd75d4e408dfaaee2c8d9235a5..30b3d19f9d4710874b98550d12b53feed47078cc 100644 +index a39ed2d5c52d5555ebc9c595c9541a5561b61f26..5fdbbf376947e4efd85f02ae978c56de62a0610b 100644 --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -@@ -209,6 +209,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -208,6 +208,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob // do not hit rider return target != rider && super.canHitEntity(target); } @@ -35,7 +35,7 @@ index 72287c44fb4be9cd75d4e408dfaaee2c8d9235a5..30b3d19f9d4710874b98550d12b53fee skull.setPosRaw(headX, headY, headZ); level.addFreshEntity(skull); diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java b/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java -index acb484e074391d2f1b6b83978ea9483cfb5c214c..2a812da233a944cce776c003194dcb9695db718f 100644 +index cbdd32ef0be241b16406ed8e3889d914e3e5e5d2..d7a001419b83d5dbd7201d149722cd1be11d1040 100644 --- a/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java +++ b/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java @@ -92,6 +92,7 @@ public class EntityStorage implements EntityPersistentStorage { diff --git a/patches/server/0064-Add-option-for-boats-to-eject-players-on-land.patch b/patches/server/0064-Add-option-for-boats-to-eject-players-on-land.patch index 1868e40b6..c0e1bf89b 100644 --- a/patches/server/0064-Add-option-for-boats-to-eject-players-on-land.patch +++ b/patches/server/0064-Add-option-for-boats-to-eject-players-on-land.patch @@ -5,10 +5,10 @@ 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 -index b967177cb10041f96831322c311579e409050e88..4b38f8186dcd9a98a5413a51c5563c496ff04d2c 100644 +index 0dbc85c450797d7384e641f80e1b1f8c56fd14fc..e4febdebc760f9babd77c55e87acccdc1625f0a5 100644 --- a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java +++ b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java -@@ -519,6 +519,7 @@ public class Boat extends Entity { +@@ -518,6 +518,7 @@ public class Boat extends Entity { if (f > 0.0F) { this.landFriction = f; @@ -17,7 +17,7 @@ index b967177cb10041f96831322c311579e409050e88..4b38f8186dcd9a98a5413a51c5563c49 } else { 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 -index ffd4ebfb93266f18a456d691eb7c7428706fadaa..3ec6ec2f9e4fb575de56c4f93c3b1d0db5d1e84d 100644 +index 7d5e570b5537960532e7b6babfd1f7ac421a3854..ecfbe1bbd192649095945ba13039d53d23ac2ca8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -94,12 +94,14 @@ public class PurpurWorldConfig { diff --git a/patches/server/0065-Mending-mends-most-damages-equipment-first.patch b/patches/server/0065-Mending-mends-most-damages-equipment-first.patch index 86d09b720..8f342ceab 100644 --- a/patches/server/0065-Mending-mends-most-damages-equipment-first.patch +++ b/patches/server/0065-Mending-mends-most-damages-equipment-first.patch @@ -5,10 +5,10 @@ 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 -index 8be7a3527018f9f6ecb91576c928c255b3089342..68072fae050fb83735725f3dc2525bfc9c0cc159 100644 +index 4848f26a006f4d4df620ded526134b3b39e90d29..37fe86f0f6ea006f658cd6a68757c1c12ae32eb7 100644 --- a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java +++ b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java -@@ -319,7 +319,7 @@ public class ExperienceOrb extends Entity { +@@ -320,7 +320,7 @@ public class ExperienceOrb extends Entity { } private int repairPlayerItems(Player player, int amount) { @@ -18,10 +18,10 @@ index 8be7a3527018f9f6ecb91576c928c255b3089342..68072fae050fb83735725f3dc2525bfc if (entry != null) { ItemStack itemstack = (ItemStack) entry.getValue(); diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 66f808cabcf6a9a6584849b285f1c60133adc7b4..2238fb40af8c95494b0aec84a5a24cdbf4165da6 100644 +index dc4639f905fb71435daf29c61f64621a3e2cc533..d1183ab1a0d0d6a973bde1640c34cc884f81e167 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -513,6 +513,16 @@ public final class ItemStack { +@@ -523,6 +523,16 @@ public final class ItemStack { return this.isDamageableItem() && this.getDamageValue() > 0; } diff --git a/patches/server/0066-Add-5-second-tps-average-in-tps.patch b/patches/server/0066-Add-5-second-tps-average-in-tps.patch index 9b67012a5..5acd294e2 100644 --- a/patches/server/0066-Add-5-second-tps-average-in-tps.patch +++ b/patches/server/0066-Add-5-second-tps-average-in-tps.patch @@ -27,7 +27,7 @@ index fa56cd09102a89692b42f1d14257990508c5c720..f9251183df72ddc56662fd3f02acf216 setListData(vector); } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 768247fccab529d2d98e955b27899a37ab183e10..759a4a5a2ad3b7052d348c1a0be30ce02e659d1d 100644 +index 67e888a41da7dc3bf47a5698ec251b135bd59426..4708f7b2cdbd9e73c98f3dab464964b7b3d1accb 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -303,7 +303,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0) { @@ -66,7 +66,7 @@ index 455de7226be37b9a0da8824f44bf8fefba2816dd..ac8a90253f45a43486c1677c57623131 int k = 0; for (int l = 0; j > 0 && l < amount; ++l) { -@@ -596,6 +596,12 @@ public final class ItemStack { +@@ -606,6 +606,12 @@ public final class ItemStack { if (this.hurt(amount, entity.getRandom(), entity /*instanceof ServerPlayer ? (ServerPlayer) entity : null*/)) { // Paper - pass LivingEntity for EntityItemDamageEvent breakCallback.accept(entity); Item item = this.getItem(); diff --git a/patches/server/0068-Item-entity-immunities.patch b/patches/server/0068-Item-entity-immunities.patch index 291a00a12..141dcdc90 100644 --- a/patches/server/0068-Item-entity-immunities.patch +++ b/patches/server/0068-Item-entity-immunities.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Item entity immunities diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index ca07ba8eb33f1b4f10aba9f4b4c7c1078f80f61b..5ce3feae48e97eaa64798a401e399adc3c8f57f8 100644 +index 5a1a0ccf163488d5c4ec377821afaa95abebddcb..f8713a8b5abbb246a13646f05ece7438f6151a79 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -2190,7 +2190,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -2242,7 +2242,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider public class TrackedEntity { @@ -18,7 +18,7 @@ index ca07ba8eb33f1b4f10aba9f4b4c7c1078f80f61b..5ce3feae48e97eaa64798a401e399adc private final int range; SectionPos lastSectionPos; diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java -index e80176708db486190dd527e3ade5fc690ceb39f7..e3d7a80f8c4b68933875ef90006b79776b4ab000 100644 +index 937a93d134dc986fe23e5676d58f7619524b9bf3..65f1f919a689f6f7960d731b250582bd521c4eea 100644 --- a/src/main/java/net/minecraft/server/level/ServerEntity.java +++ b/src/main/java/net/minecraft/server/level/ServerEntity.java @@ -67,7 +67,7 @@ public class ServerEntity { @@ -31,7 +31,7 @@ index e80176708db486190dd527e3ade5fc690ceb39f7..e3d7a80f8c4b68933875ef90006b7977 public ServerEntity(ServerLevel worldserver, Entity entity, int i, boolean flag, Consumer> consumer, Set trackedPlayers) { this.trackedPlayers = trackedPlayers; diff --git a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java -index 7889c9832c6a1ac2afebe4e1030495b3ea52fc2b..ee5d8fc20dc761d71eaebb6d0a7ecbbe611bcdd4 100644 +index e5b8bcfe0d69cc0deecdf54662d553f16550fd2a..1c5aa4e7b06c2b2ce32ea63140154db3c5c58231 100644 --- a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java +++ b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java @@ -54,6 +54,12 @@ public class ItemEntity extends Entity { @@ -47,7 +47,7 @@ index 7889c9832c6a1ac2afebe4e1030495b3ea52fc2b..ee5d8fc20dc761d71eaebb6d0a7ecbbe public ItemEntity(EntityType type, Level world) { super(type, world); -@@ -327,6 +333,16 @@ public class ItemEntity extends Entity { +@@ -327,6 +333,15 @@ public class ItemEntity extends Entity { return false; } else if (!this.getItem().getItem().canBeHurtBy(source)) { return false; @@ -58,13 +58,12 @@ index 7889c9832c6a1ac2afebe4e1030495b3ea52fc2b..ee5d8fc20dc761d71eaebb6d0a7ecbbe + (immuneToLightning && source == DamageSource.LIGHTNING_BOLT) || + (immuneToExplosion && source.isExplosion()) + ) { -+ respawnOnClient(); + return false; + // Purpur end + } else if (this.level.isClientSide) { + return true; } else { - // CraftBukkit start - if (org.bukkit.craftbukkit.event.CraftEventFactory.handleNonLivingEntityDamageEvent(this, source, amount)) { -@@ -509,6 +525,12 @@ public class ItemEntity extends Entity { +@@ -511,6 +526,12 @@ public class ItemEntity extends Entity { com.google.common.base.Preconditions.checkArgument(!stack.isEmpty(), "Cannot drop air"); // CraftBukkit this.getEntityData().set(ItemEntity.DATA_ITEM, stack); this.getEntityData().markDirty(ItemEntity.DATA_ITEM); // CraftBukkit - SPIGOT-4591, must mark dirty @@ -77,24 +76,6 @@ index 7889c9832c6a1ac2afebe4e1030495b3ea52fc2b..ee5d8fc20dc761d71eaebb6d0a7ecbbe } @Override -@@ -599,4 +621,17 @@ public class ItemEntity extends Entity { - public SoundSource getSoundSource() { - return SoundSource.AMBIENT; - } -+ -+ // Purpur start -+ public void respawnOnClient() { -+ Packet spawnPacket = new ClientboundAddEntityPacket(this); -+ Packet metadataPacket = new net.minecraft.network.protocol.game.ClientboundSetEntityDataPacket(getId(), getEntityData(), true); -+ for (net.minecraft.server.network.ServerPlayerConnection connection : this.tracker.serverEntity.trackedPlayers) { -+ if (!connection.getPlayer().purpurClient) { -+ connection.send(spawnPacket); -+ connection.send(metadataPacket); -+ } -+ } -+ } -+ // Purpur end - } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java index 8d56f0ab748373e55c0166b92382c126fe8e5381..0637e074dbe4a10bc19e7bf9dd79e2d966b07b1d 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java diff --git a/patches/server/0069-Add-ping-command.patch b/patches/server/0069-Add-ping-command.patch index 701e0f52a..3f35df79f 100644 --- a/patches/server/0069-Add-ping-command.patch +++ b/patches/server/0069-Add-ping-command.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add ping command diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index beac966ddf6348ac956920a803dd509a80dd1132..0d864e0e9de1af810c09a47730ce60bfba235fa4 100644 +index c79c89bab8972a26c7a48f63ad20ac34b0fc8750..00ab01661c12ecd7b384be81388c9aaa5b32d706 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java -@@ -205,6 +205,7 @@ public class Commands { +@@ -207,6 +207,7 @@ public class Commands { SetPlayerIdleTimeoutCommand.register(this.dispatcher); StopCommand.register(this.dispatcher); WhitelistCommand.register(this.dispatcher); @@ -17,7 +17,7 @@ index beac966ddf6348ac956920a803dd509a80dd1132..0d864e0e9de1af810c09a47730ce60bf if (environment.includeIntegrated) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 25747c6f1aa2415217bf65ba49a6090319c740c1..b87447d084fb752749f224ecf488c69dc6ab4bcb 100644 +index b41d73318d6795c0fa7b9c60431ef141026fa9d6..6d40bfc2e7ea6090589fd12057ed8d54966fe2d2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -173,12 +173,14 @@ public class PurpurConfig { diff --git a/patches/server/0070-Add-demo-command.patch b/patches/server/0070-Add-demo-command.patch index 5400b619d..5b6045b1c 100644 --- a/patches/server/0070-Add-demo-command.patch +++ b/patches/server/0070-Add-demo-command.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add demo command diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index 0d864e0e9de1af810c09a47730ce60bfba235fa4..d0d5aeb92c0b25643003b17a73c7580c3310e353 100644 +index 00ab01661c12ecd7b384be81388c9aaa5b32d706..a5c5f3aa76ba819541dd927c0749806bbb2f1942 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java -@@ -205,6 +205,7 @@ public class Commands { +@@ -207,6 +207,7 @@ public class Commands { SetPlayerIdleTimeoutCommand.register(this.dispatcher); StopCommand.register(this.dispatcher); WhitelistCommand.register(this.dispatcher); @@ -17,7 +17,7 @@ index 0d864e0e9de1af810c09a47730ce60bfba235fa4..d0d5aeb92c0b25643003b17a73c7580c } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index b87447d084fb752749f224ecf488c69dc6ab4bcb..fecc844b8eaf735ad6802a50ab117bdd9f65c398 100644 +index 6d40bfc2e7ea6090589fd12057ed8d54966fe2d2..2b161a4e098b7b17f52209ddd71d64ac7e6da5ed 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -173,6 +173,7 @@ public class PurpurConfig { diff --git a/patches/server/0071-Add-credits-command.patch b/patches/server/0071-Add-credits-command.patch index 557ee35c0..25e46e55a 100644 --- a/patches/server/0071-Add-credits-command.patch +++ b/patches/server/0071-Add-credits-command.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add credits command diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index d0d5aeb92c0b25643003b17a73c7580c3310e353..40735237cc87a476d08f1ffcb1b67ce563091230 100644 +index a5c5f3aa76ba819541dd927c0749806bbb2f1942..362fd34016b83ba346a43abb6acf38d887918437 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java -@@ -205,6 +205,7 @@ public class Commands { +@@ -207,6 +207,7 @@ public class Commands { SetPlayerIdleTimeoutCommand.register(this.dispatcher); StopCommand.register(this.dispatcher); WhitelistCommand.register(this.dispatcher); @@ -17,7 +17,7 @@ index d0d5aeb92c0b25643003b17a73c7580c3310e353..40735237cc87a476d08f1ffcb1b67ce5 org.purpurmc.purpur.command.PingCommand.register(this.dispatcher); // Purpur } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index fecc844b8eaf735ad6802a50ab117bdd9f65c398..4a2c8deefe9259b974be33a0d648a17a98845122 100644 +index 2b161a4e098b7b17f52209ddd71d64ac7e6da5ed..e49c2c16f6130eb1343d49d5a3972f505155aba2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -173,6 +173,7 @@ public class PurpurConfig { diff --git a/patches/server/0072-Configurable-jockey-options.patch b/patches/server/0072-Configurable-jockey-options.patch index c21b0d9f6..d428d0106 100644 --- a/patches/server/0072-Configurable-jockey-options.patch +++ b/patches/server/0072-Configurable-jockey-options.patch @@ -5,10 +5,10 @@ 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 -index 0217fb932379e5789dce932b6af90f1e97fb95de..dac2407cc170ed59d09e3969e432e3b5aaa48a66 100644 +index 208dfda498cafc588f88b0b9fa53da85aaed2298..05129a339c2345a72cac75def870171081d375dc 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java +++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java -@@ -94,6 +94,21 @@ public class Drowned extends Zombie implements RangedAttackMob { +@@ -92,6 +92,21 @@ public class Drowned extends Zombie implements RangedAttackMob { protected void randomizeReinforcementsChance() { this.getAttribute(Attributes.SPAWN_REINFORCEMENTS_CHANCE).setBaseValue(this.random.nextDouble() * this.level.purpurConfig.drownedSpawnReinforcements); } @@ -57,7 +57,7 @@ index ff84c706d42bc6859faaa9302ba688f43ddcb537..640c75c2cf7ec1f1bc514d29ac1f929c public static boolean checkHuskSpawnRules(EntityType type, ServerLevelAccessor world, MobSpawnType spawnReason, BlockPos pos, Random random) { 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 6943933ef0e97f31fbbcedee4ff469bc6e7e49c0..f1056d9174e19266990e54a04b3f99f2ea46beb1 100644 +index 28a73680800e672ff01d9a5949e87b776c94c536..36b3a712ba20e1f70e01f723185c67663e93371d 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -124,6 +124,18 @@ public class Zombie extends Monster { @@ -115,10 +115,10 @@ index 6943933ef0e97f31fbbcedee4ff469bc6e7e49c0..f1056d9174e19266990e54a04b3f99f2 } } 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 6309a40ce0d349a6e278d6584b056dc644a358ba..cad1a9be238aa62b4eb0ec02d4155d15c0cc5378 100644 +index 237ff13e88c2cdeda001500f8adc16b37efc2115..b925e0ffbdc8f388a7b2162284e8356c3e969454 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -@@ -100,6 +100,21 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { +@@ -104,6 +104,21 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { protected void randomizeReinforcementsChance() { this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.SPAWN_REINFORCEMENTS_CHANCE).setBaseValue(this.random.nextDouble() * this.level.purpurConfig.zombieVillagerSpawnReinforcements); } @@ -141,7 +141,7 @@ index 6309a40ce0d349a6e278d6584b056dc644a358ba..cad1a9be238aa62b4eb0ec02d4155d15 @Override 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 e743fb4de0647088d06ec53291496e0d2f44fe44..e2192c45eba111a62dded3731dcdeacc6168710c 100644 +index 43e8eac09accc1f5f9d4b821ccff1a7a92b24121..eb8b111faffbd3143465ed531e86ea572f53fdea 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java @@ -79,6 +79,21 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { diff --git a/patches/server/0077-Add-allow-water-in-end-world-option.patch b/patches/server/0077-Add-allow-water-in-end-world-option.patch index db8071be9..888716e12 100644 --- a/patches/server/0077-Add-allow-water-in-end-world-option.patch +++ b/patches/server/0077-Add-allow-water-in-end-world-option.patch @@ -27,13 +27,13 @@ index a3f04f66c66f40068792da3ef0e75e7df102b0e0..e4ee273568502f4cf4d85c5d50d5d63c return true; diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index d6e0d375c272bf2503872fe19a1d62dd58584c6f..6f3e7ed95914f33e6ce13311271bf195a89adbec 100644 +index 5c69a8914ce87f1a19c4a86c7d7a8a15df78a270..7769befb5775df71d67b1d9b594e33be5334431b 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -1607,4 +1607,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable { - public boolean shouldDelayFallingBlockEntityRemoval(Entity.RemovalReason reason) { - return false; +@@ -1604,4 +1604,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable { + return ret; } + // Paper end + + // Purpur start + public boolean isNether() { diff --git a/patches/server/0078-Allow-color-codes-in-books.patch b/patches/server/0078-Allow-color-codes-in-books.patch index 622141a44..407eb4155 100644 --- a/patches/server/0078-Allow-color-codes-in-books.patch +++ b/patches/server/0078-Allow-color-codes-in-books.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Allow color codes in books diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 96aa7a49663050e151385106ef23f64efdcc61de..651178b4ea058d8a424961ff160d161bfc3a1187 100644 +index 893fdd70090b182f783529681edd5f35beeebad2..fa3b4d98972838850c6487b941ea9243c26ab01c 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1237,13 +1237,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -1231,13 +1231,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser itemstack1.setTag(nbttagcompound.copy()); } @@ -28,7 +28,7 @@ index 96aa7a49663050e151385106ef23f64efdcc61de..651178b4ea058d8a424961ff160d161b this.updateBookPages(pages, (s) -> { return Component.Serializer.toJson(new TextComponent(s)); -@@ -1255,10 +1258,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -1249,10 +1252,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser private void updateBookPages(List list, UnaryOperator unaryoperator, ItemStack itemstack, int slot, ItemStack handItem) { // CraftBukkit ListTag nbttaglist = new ListTag(); @@ -44,7 +44,7 @@ index 96aa7a49663050e151385106ef23f64efdcc61de..651178b4ea058d8a424961ff160d161b Objects.requireNonNull(nbttaglist); stream.forEach(nbttaglist::add); -@@ -1268,10 +1274,10 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -1262,10 +1268,10 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser for (int j = list.size(); i < j; ++i) { TextFilter.FilteredText itextfilter_a = (TextFilter.FilteredText) list.get(i); @@ -57,7 +57,7 @@ index 96aa7a49663050e151385106ef23f64efdcc61de..651178b4ea058d8a424961ff160d161b if (!s.equals(s1)) { nbttagcompound.putString(String.valueOf(i), (String) unaryoperator.apply(s1)); -@@ -1287,6 +1293,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -1281,6 +1287,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser this.player.getInventory().setItem(slot, CraftEventFactory.handleEditBookEvent(player, slot, handItem, itemstack)); // CraftBukkit // Paper - Don't ignore result (see other callsite for handleEditBookEvent) } diff --git a/patches/server/0079-Entity-lifespan.patch b/patches/server/0079-Entity-lifespan.patch index 09c96a2f3..de27a88dd 100644 --- a/patches/server/0079-Entity-lifespan.patch +++ b/patches/server/0079-Entity-lifespan.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Entity lifespan diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 651178b4ea058d8a424961ff160d161bfc3a1187..ffc7b49f4b3a783e37670efa935501295b6660a5 100644 +index fa3b4d98972838850c6487b941ea9243c26ab01c..c0889697ed81298b66e418d53abd7598e1a6dc3f 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2513,6 +2513,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -2521,6 +2521,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser double d0 = 36.0D; if (this.player.distanceToSqr(entity) < 36.0D) { @@ -17,7 +17,7 @@ index 651178b4ea058d8a424961ff160d161bfc3a1187..ffc7b49f4b3a783e37670efa93550129 private void performInteraction(InteractionHand enumhand, ServerGamePacketListenerImpl.EntityInteraction playerconnection_a, PlayerInteractEntityEvent event) { // CraftBukkit ItemStack itemstack = ServerGamePacketListenerImpl.this.player.getItemInHand(enumhand).copy(); diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 867abf68593b5ede92adf80be8c5169e7c3b2665..0330ccccff19a44cc56d58fa05891b9f183225cf 100644 +index ce9087c1374d54ce59ec6897dd9885540bd5181c..fdadbd3b393916b0f6d110140d0c22c8e173dd1a 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -129,6 +129,7 @@ public abstract class Mob extends LivingEntity { diff --git a/patches/server/0080-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch b/patches/server/0080-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch index e1dbb1072..ceda8b5dd 100644 --- a/patches/server/0080-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch +++ b/patches/server/0080-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch @@ -5,18 +5,19 @@ Subject: [PATCH] Add option to teleport to spawn if outside world border diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index ae40f50a33f676059738625773127ff9ae181be0..295658d4b479e8a3e825f0b5ce5dfc2c7c55a0fe 100644 +index 6721da5ec6ea4fc10cee4658b51e9a1b795eb8b9..a27663768a6c3ac71a4dd86286f8db5feba075ef 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -2537,5 +2537,25 @@ public class ServerPlayer extends Player { - } +@@ -2536,4 +2536,26 @@ public class ServerPlayer extends Player { // CraftBukkit end + public final int getViewDistance() { throw new UnsupportedOperationException("Use PlayerChunkLoader"); } // Paper - placeholder ++ + // Purpur start + public void teleport(Location to) { + this.ejectPassengers(); + this.stopRiding(true); - ++ + if (this.isSleeping()) { + this.stopSleepInBed(true, false); + } @@ -35,10 +36,10 @@ index ae40f50a33f676059738625773127ff9ae181be0..295658d4b479e8a3e825f0b5ce5dfc2c + // Purpur end } diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 0344e6f50fab35512a5c49ea66d017078e2353b4..1167826ac427a157f7c2b997f60ea4b2d8f863f7 100644 +index 0ff49c290f5294e6986d9c2088e441f0ec96ff22..ccecf12fa8c5a498f8a7ced421e1084c8f04c194 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -43,6 +43,7 @@ import net.minecraft.network.syncher.EntityDataAccessor; +@@ -45,6 +45,7 @@ import net.minecraft.network.syncher.EntityDataAccessor; import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.SynchedEntityData; import net.minecraft.resources.ResourceLocation; @@ -46,7 +47,7 @@ index 0344e6f50fab35512a5c49ea66d017078e2353b4..1167826ac427a157f7c2b997f60ea4b2 import net.minecraft.server.level.ServerChunkCache; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; -@@ -406,6 +407,7 @@ public abstract class LivingEntity extends Entity { +@@ -409,6 +410,7 @@ public abstract class LivingEntity extends Entity { double d1 = this.level.getWorldBorder().getDamagePerBlock(); if (d1 > 0.0D) { diff --git a/patches/server/0083-Configurable-villager-breeding.patch b/patches/server/0083-Configurable-villager-breeding.patch index 45f943f4d..3c866b234 100644 --- a/patches/server/0083-Configurable-villager-breeding.patch +++ b/patches/server/0083-Configurable-villager-breeding.patch @@ -5,10 +5,10 @@ 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 -index fedf1a178b27da8e38af9b2e741b76de5d96ed89..14ba8dcf9392e3bfdb92663f98455cb9c0f44c10 100644 +index 2c99eda984bd147e5ce7d32dd11b818d8b8561aa..094fd4289bc42df6af6740acacd4f51ab6b668e0 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -772,7 +772,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -774,7 +774,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @Override public boolean canBreed() { diff --git a/patches/server/0085-Totems-work-in-inventory.patch b/patches/server/0085-Totems-work-in-inventory.patch index bfdd70d9f..017b1592f 100644 --- a/patches/server/0085-Totems-work-in-inventory.patch +++ b/patches/server/0085-Totems-work-in-inventory.patch @@ -5,10 +5,10 @@ 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 -index 1167826ac427a157f7c2b997f60ea4b2d8f863f7..57f742372485be36f6e854c9a113f0fc3d8f2f13 100644 +index ccecf12fa8c5a498f8a7ced421e1084c8f04c194..e39d333c10d74be81da173622b5e033bfde9cf3a 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1518,6 +1518,19 @@ public abstract class LivingEntity extends Entity { +@@ -1521,6 +1521,19 @@ public abstract class LivingEntity extends Entity { } } diff --git a/patches/server/0088-Dispensers-place-anvils-option.patch b/patches/server/0088-Dispensers-place-anvils-option.patch index 40f67b8ae..01b7baf24 100644 --- a/patches/server/0088-Dispensers-place-anvils-option.patch +++ b/patches/server/0088-Dispensers-place-anvils-option.patch @@ -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 -index 59db245fe11384282af84ec1d5be08ab0e9484ca..a08eebaa08a75be4e7e8f6d560740ea18151cc93 100644 +index 4b151444f8d7ed26dc87c9ae55fa8a14a8d84ed7..93f7c056085bbc269ebc764c99fef1a3d2d96d49 100644 --- a/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java +++ b/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java @@ -50,6 +50,7 @@ import net.minecraft.world.item.SpawnEggItem; @@ -16,7 +16,7 @@ index 59db245fe11384282af84ec1d5be08ab0e9484ca..a08eebaa08a75be4e7e8f6d560740ea1 import net.minecraft.world.level.block.BaseFireBlock; import net.minecraft.world.level.block.BeehiveBlock; import net.minecraft.world.level.block.Block; -@@ -1107,6 +1108,23 @@ public interface DispenseItemBehavior { +@@ -1106,6 +1107,23 @@ public interface DispenseItemBehavior { } } }); @@ -41,7 +41,7 @@ index 59db245fe11384282af84ec1d5be08ab0e9484ca..a08eebaa08a75be4e7e8f6d560740ea1 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 -index ccdbeca6fa964fc2d1b4b25bdd4a218ea13a92df..4d6d6d14556790a2ad6d129afb57a3b042662f01 100644 +index 48f8f0447d4612c15b3a9c53b74c593a608bc352..e6b649f80931a70e40d1949d964df52ef6517cef 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -313,8 +313,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0089-Allow-anvil-colors.patch b/patches/server/0089-Allow-anvil-colors.patch index 83d57f3f8..674630262 100644 --- a/patches/server/0089-Allow-anvil-colors.patch +++ b/patches/server/0089-Allow-anvil-colors.patch @@ -5,11 +5,11 @@ Subject: [PATCH] Allow anvil colors diff --git a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java -index 3314cb81d4d5ce9c1d5472e1213b6bcc1c688b9c..69d996fead45bcf9fe5a29727f7f0a7a162cdabe 100644 +index 90e1c28a5030ecf5fe1d5e6ff2a1685c3f4db84c..043c938baab885ce00e96985159bbd4b233e70fa 100644 --- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java +++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java -@@ -2,6 +2,9 @@ package net.minecraft.world.inventory; - +@@ -3,6 +3,9 @@ package net.minecraft.world.inventory; + import com.mojang.logging.LogUtils; import java.util.Iterator; import java.util.Map; + @@ -18,7 +18,7 @@ index 3314cb81d4d5ce9c1d5472e1213b6bcc1c688b9c..69d996fead45bcf9fe5a29727f7f0a7a import net.minecraft.nbt.IntTag; import net.minecraft.network.chat.TextComponent; import net.minecraft.network.protocol.game.ClientboundContainerSetDataPacket; -@@ -276,6 +279,17 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -275,6 +278,17 @@ public class AnvilMenu extends ItemCombinerMenu { } else if (!this.itemName.equals(itemstack.getHoverName().getString())) { b1 = 1; i += b1; @@ -37,7 +37,7 @@ index 3314cb81d4d5ce9c1d5472e1213b6bcc1c688b9c..69d996fead45bcf9fe5a29727f7f0a7a } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4d6d6d14556790a2ad6d129afb57a3b042662f01..e636499f07581429e0bc42f6b9c1c80fb48cc71a 100644 +index e6b649f80931a70e40d1949d964df52ef6517cef..6319654f2560a1d035d13b2a1ada30c91c4d9cdb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -296,6 +296,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0090-Add-option-to-disable-dolphin-treasure-searching.patch b/patches/server/0090-Add-option-to-disable-dolphin-treasure-searching.patch index 34e02512a..cdc20d060 100644 --- a/patches/server/0090-Add-option-to-disable-dolphin-treasure-searching.patch +++ b/patches/server/0090-Add-option-to-disable-dolphin-treasure-searching.patch @@ -5,10 +5,10 @@ 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 -index af2a46699fc2520a796a68f77c12ff6479d87e31..9ad944839ec143375414fc3e054a2f8cc16814cd 100644 +index 5dfc40bd19c556a5bc481ab9bdcbd19887e7e5c9..4970823d6bed593a646b3b074fcaf53fd4afadb2 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java -@@ -488,6 +488,7 @@ public class Dolphin extends WaterAnimal { +@@ -486,6 +486,7 @@ public class Dolphin extends WaterAnimal { @Override public boolean canUse() { diff --git a/patches/server/0091-Short-enderman-height.patch b/patches/server/0091-Short-enderman-height.patch index ca5c90e5b..242eb5dfb 100644 --- a/patches/server/0091-Short-enderman-height.patch +++ b/patches/server/0091-Short-enderman-height.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Short enderman height diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java -index 4833e545545d9114a15f0bcc0d0a2a214183000f..fce7a9c1c1477d1b02a4adbe0bc5a5c97b8c93c9 100644 +index e26faaf10a9250d1ab3cd5c3ed98702112b6dd29..262ed82130b3ee8b110698e31f3a4bc78dac1ec1 100644 --- a/src/main/java/net/minecraft/world/entity/EntityType.java +++ b/src/main/java/net/minecraft/world/entity/EntityType.java -@@ -279,7 +279,8 @@ public class EntityType implements EntityTypeTest { +@@ -282,7 +282,8 @@ public class EntityType implements EntityTypeTest { private Component description; @Nullable private ResourceLocation lootTable; @@ -19,10 +19,10 @@ index 4833e545545d9114a15f0bcc0d0a2a214183000f..fce7a9c1c1477d1b02a4adbe0bc5a5c9 private static EntityType register(String id, EntityType.Builder type) { // CraftBukkit - decompile error return (EntityType) Registry.register(Registry.ENTITY_TYPE, id, (EntityType) type.build(id)); // CraftBukkit - decompile error 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 c7917051c7303ab5ffc38c2cab6fc1b2b39c9642..83341eaa1162c311d6e1649fe9b6743597077e35 100644 +index b5fce127d74ac5958758bfa39551e3e1f33cbc85..c4f5d033e381aa501fd689a297fb40c713f12c2a 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -410,6 +410,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -409,6 +409,7 @@ public class EnderMan extends Monster implements NeutralMob { if (this.isInvulnerableTo(source)) { return false; } else if (getRider() != null && this.isControllable()) { return super.hurt(source, amount); // Purpur - no teleporting on damage @@ -31,7 +31,7 @@ index c7917051c7303ab5ffc38c2cab6fc1b2b39c9642..83341eaa1162c311d6e1649fe9b67435 Entity entity = source.getDirectEntity(); boolean flag; diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 88db2e1c32601288d33fe6ea0b8f2c7fc30ce68f..b1f52990e3dd57973efefc84c18010e5e2bad4cb 100644 +index 190e738ad33ca98aebda0d7b43dfdef8d7bea0cc..9dcc7247cf6a8b1bab66db0c80384f99d13aa669 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -237,6 +237,12 @@ public class PurpurConfig { diff --git a/patches/server/0092-Stop-squids-floating-on-top-of-water.patch b/patches/server/0092-Stop-squids-floating-on-top-of-water.patch index 56603aec0..037bfbce7 100644 --- a/patches/server/0092-Stop-squids-floating-on-top-of-water.patch +++ b/patches/server/0092-Stop-squids-floating-on-top-of-water.patch @@ -5,10 +5,10 @@ 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 -index d6870a178e991bf2e07517596d12d8b3d198fa47..3e1dfe002eebb48d8ae402196deeb37d5baa3a1b 100644 +index f283f292e3fb1f97a48d69c441eb5c0347ca344c..0a8aca17afe93af248d8a9074b6fe08bc60346ba 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3940,6 +3940,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i +@@ -3975,6 +3975,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i this.yRotO = this.getYRot(); } @@ -18,14 +18,14 @@ index d6870a178e991bf2e07517596d12d8b3d198fa47..3e1dfe002eebb48d8ae402196deeb37d + } + // Purpur end + - public boolean updateFluidHeightAndDoFluidPushing(Tag tag, double speed) { + public boolean updateFluidHeightAndDoFluidPushing(TagKey tag, double speed) { if (false && this.touchingUnloadedChunk()) { // Pufferfish - cost of a lookup here is the same cost as below, so skip 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 -index 565276f556e2c7cf465b6bed53bdeac5ce4c4312..45533523c5eee0431e96c01de4a64f9f0b887a2e 100644 +index 99248a9e2769a573839b199150da312d33344f95..709aaa9dc834d91219ce1087d8f89ef5bf3d915c 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java -@@ -81,6 +81,12 @@ public class Squid extends WaterAnimal { +@@ -80,6 +80,12 @@ public class Squid extends WaterAnimal { public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.squidMaxHealth); } diff --git a/patches/server/0093-Crying-obsidian-valid-for-portal-frames.patch b/patches/server/0093-Crying-obsidian-valid-for-portal-frames.patch index a680814c8..38952e7c3 100644 --- a/patches/server/0093-Crying-obsidian-valid-for-portal-frames.patch +++ b/patches/server/0093-Crying-obsidian-valid-for-portal-frames.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Crying obsidian valid for portal frames diff --git a/src/main/java/net/minecraft/world/level/portal/PortalShape.java b/src/main/java/net/minecraft/world/level/portal/PortalShape.java -index 5d76674d5e181f012c0686e9915556bc93087706..3f3a8b577f707ad0a80d27fca2d61b0929206d65 100644 +index 3414f3190e1a760c602613e82e551e797c3aa575..5368376c126f3b629c0448f937c140abb402ef43 100644 --- a/src/main/java/net/minecraft/world/level/portal/PortalShape.java +++ b/src/main/java/net/minecraft/world/level/portal/PortalShape.java -@@ -31,7 +31,7 @@ public class PortalShape { +@@ -30,7 +30,7 @@ public class PortalShape { private static final int MIN_HEIGHT = 3; public static final int MAX_HEIGHT = 21; private static final BlockBehaviour.StatePredicate FRAME = (iblockdata, iblockaccess, blockposition) -> { @@ -18,7 +18,7 @@ index 5d76674d5e181f012c0686e9915556bc93087706..3f3a8b577f707ad0a80d27fca2d61b09 private final LevelAccessor level; private final Direction.Axis axis; diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index b1f52990e3dd57973efefc84c18010e5e2bad4cb..77919711992c28baecb1c0f178232ed8bb06e9fe 100644 +index 9dcc7247cf6a8b1bab66db0c80384f99d13aa669..1cd8358c3d9f96073224846143516097aeb8fd23 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -205,6 +205,7 @@ public class PurpurConfig { diff --git a/patches/server/0094-Entities-can-use-portals-configuration.patch b/patches/server/0094-Entities-can-use-portals-configuration.patch index cad85a831..873ef2e0b 100644 --- a/patches/server/0094-Entities-can-use-portals-configuration.patch +++ b/patches/server/0094-Entities-can-use-portals-configuration.patch @@ -5,10 +5,10 @@ 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 -index 3e1dfe002eebb48d8ae402196deeb37d5baa3a1b..2c1358794db54433cc8d98ce30ed04039b8f67f7 100644 +index 0a8aca17afe93af248d8a9074b6fe08bc60346ba..d672233bbb672ace6218ab8117714add56133685 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -2764,7 +2764,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i +@@ -2798,7 +2798,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i public void handleInsidePortal(BlockPos pos) { if (this.isOnPortalCooldown()) { this.setPortalCooldown(); @@ -17,7 +17,7 @@ index 3e1dfe002eebb48d8ae402196deeb37d5baa3a1b..2c1358794db54433cc8d98ce30ed0403 if (!this.level.isClientSide && !pos.equals(this.portalEntrancePos)) { this.portalEntrancePos = pos.immutable(); } -@@ -3429,7 +3429,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i +@@ -3464,7 +3464,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i } public boolean canChangeDimensions() { diff --git a/patches/server/0096-Customizable-wither-health-and-healing.patch b/patches/server/0096-Customizable-wither-health-and-healing.patch index 829a1f023..330ba17ad 100644 --- a/patches/server/0096-Customizable-wither-health-and-healing.patch +++ b/patches/server/0096-Customizable-wither-health-and-healing.patch @@ -6,10 +6,10 @@ 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. 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 9e6b44da2098b11b204d45a0f44287d842b5f792..5bb5390ccec6826ead2198b413254dd1bd10f4b8 100644 +index 5fdbbf376947e4efd85f02ae978c56de62a0610b..a8698975b368b27c0bb1cab4e0b83d69e773fc6b 100644 --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -@@ -520,8 +520,10 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -519,8 +519,10 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob } } diff --git a/patches/server/0097-Allow-toggling-special-MobSpawners-per-world.patch b/patches/server/0097-Allow-toggling-special-MobSpawners-per-world.patch index 98686038d..a81bef51a 100644 --- a/patches/server/0097-Allow-toggling-special-MobSpawners-per-world.patch +++ b/patches/server/0097-Allow-toggling-special-MobSpawners-per-world.patch @@ -6,37 +6,10 @@ Subject: [PATCH] Allow toggling special MobSpawners per world In vanilla, these are all hardcoded on for world type 0 (overworld) and hardcoded off for every other world type. Default config behaviour matches this. diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 4fcc013883a7dbf58e4cf3972d43516cd51f8e7e..9ff1f59202fa359c01aa7f976866a8dfe5a41133 100644 +index b3c38d079e1365265c3d672484d408df76dfaf2d..c2481006511217c1677dbb2bab01b40c2d8233ee 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -83,6 +83,7 @@ import net.minecraft.world.entity.MobCategory; - import net.minecraft.world.entity.ReputationEventHandler; - import net.minecraft.world.entity.ai.navigation.PathNavigation; - import net.minecraft.world.entity.ai.village.ReputationEventType; -+import net.minecraft.world.entity.ai.village.VillageSiege; - import net.minecraft.world.entity.ai.village.poi.PoiManager; - import net.minecraft.world.entity.ai.village.poi.PoiType; - import net.minecraft.world.entity.animal.Animal; -@@ -90,7 +91,9 @@ import net.minecraft.world.entity.animal.WaterAnimal; - import net.minecraft.world.entity.animal.horse.SkeletonHorse; - import net.minecraft.world.entity.boss.EnderDragonPart; - import net.minecraft.world.entity.boss.enderdragon.EnderDragon; -+import net.minecraft.world.entity.npc.CatSpawner; - import net.minecraft.world.entity.npc.Npc; -+import net.minecraft.world.entity.npc.WanderingTraderSpawner; - import net.minecraft.world.entity.player.Player; - import net.minecraft.world.entity.raid.Raid; - import net.minecraft.world.entity.raid.Raids; -@@ -129,6 +132,8 @@ import net.minecraft.world.level.gameevent.GameEvent; - import net.minecraft.world.level.gameevent.GameEventListenerRegistrar; - import net.minecraft.world.level.gameevent.vibrations.VibrationPath; - import net.minecraft.world.level.levelgen.Heightmap; -+import net.minecraft.world.level.levelgen.PatrolSpawner; -+import net.minecraft.world.level.levelgen.PhantomSpawner; - import net.minecraft.world.level.levelgen.feature.StructureFeature; - import net.minecraft.world.level.levelgen.structure.BoundingBox; - import net.minecraft.world.level.levelgen.structure.StructureCheck; -@@ -496,7 +501,24 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -497,7 +497,24 @@ public class ServerLevel extends Level implements WorldGenLevel { this.dragonParts = new Int2ObjectOpenHashMap(); this.tickTime = flag1; this.server = minecraftserver; @@ -44,26 +17,26 @@ index 4fcc013883a7dbf58e4cf3972d43516cd51f8e7e..9ff1f59202fa359c01aa7f976866a8df + // Purpur start - enable/disable MobSpawners per world + this.customSpawners = Lists.newArrayList(); + if (purpurConfig.phantomSpawning) { -+ customSpawners.add(new PhantomSpawner()); ++ customSpawners.add(new net.minecraft.world.level.levelgen.PhantomSpawner()); + } + if (purpurConfig.patrolSpawning) { -+ customSpawners.add(new PatrolSpawner()); ++ customSpawners.add(new net.minecraft.world.level.levelgen.PatrolSpawner()); + } + if (purpurConfig.catSpawning) { -+ customSpawners.add(new CatSpawner()); ++ customSpawners.add(new net.minecraft.world.entity.npc.CatSpawner()); + } + if (purpurConfig.villageSiegeSpawning) { -+ customSpawners.add(new VillageSiege()); ++ customSpawners.add(new net.minecraft.world.entity.ai.village.VillageSiege()); + } + if (purpurConfig.villagerTraderSpawning) { -+ customSpawners.add(new WanderingTraderSpawner(iworlddataserver)); ++ customSpawners.add(new net.minecraft.world.entity.npc.WanderingTraderSpawner(iworlddataserver)); + } + // Purpur end // CraftBukkit start this.serverLevelData = (PrimaryLevelData) iworlddataserver; this.serverLevelData.setWorld(this); diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTraderSpawner.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTraderSpawner.java -index 323eea2bccacfcc85849b5d82c2b30d991e0c0d8..bb5918ff947eb4cc4d0c964b2a8a9166c5745987 100644 +index 4e478c30714a8e4cd95f02e73615d166836d1e4b..17fc1e07069546cdd3a7bd35e900e4c35ed43fd5 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTraderSpawner.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTraderSpawner.java @@ -5,6 +5,7 @@ import java.util.Optional; diff --git a/patches/server/0098-Raid-cooldown-setting.patch b/patches/server/0098-Raid-cooldown-setting.patch index 93c025438..9c5aa2294 100644 --- a/patches/server/0098-Raid-cooldown-setting.patch +++ b/patches/server/0098-Raid-cooldown-setting.patch @@ -5,10 +5,10 @@ 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 -index e8dd1fdf1a3b697a2e040424df49ac6527b68312..120f77f52ef493f16c2bd8fbc8d8d0a4271560e7 100644 +index 17b24f57cc5d63f99eb999cfe3e2362758fe0f4f..95e5ae32e23781cfc1443542dc1ff40ab28eb7be 100644 --- a/src/main/java/net/minecraft/world/entity/raid/Raids.java +++ b/src/main/java/net/minecraft/world/entity/raid/Raids.java -@@ -27,6 +27,7 @@ import net.minecraft.world.phys.Vec3; +@@ -28,6 +28,7 @@ import net.minecraft.world.phys.Vec3; public class Raids extends SavedData { private static final String RAID_FILE_ID = "raids"; @@ -16,7 +16,7 @@ index e8dd1fdf1a3b697a2e040424df49ac6527b68312..120f77f52ef493f16c2bd8fbc8d8d0a4 public final Map raidMap = Maps.newHashMap(); private final ServerLevel level; private int nextAvailableID; -@@ -44,6 +45,17 @@ public class Raids extends SavedData { +@@ -45,6 +46,17 @@ public class Raids extends SavedData { public void tick() { ++this.tick; @@ -34,7 +34,7 @@ index e8dd1fdf1a3b697a2e040424df49ac6527b68312..120f77f52ef493f16c2bd8fbc8d8d0a4 Iterator iterator = this.raidMap.values().iterator(); while (iterator.hasNext()) { -@@ -127,10 +139,15 @@ public class Raids extends SavedData { +@@ -128,10 +140,15 @@ public class Raids extends SavedData { if (flag) { // CraftBukkit start @@ -52,7 +52,7 @@ index e8dd1fdf1a3b697a2e040424df49ac6527b68312..120f77f52ef493f16c2bd8fbc8d8d0a4 if (!this.raidMap.containsKey(raid.getId())) { 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 -index 8063f1d20a6f505514c94a28b890488319ca5628..e4bba9ac3a8b1f5b454a4907700a520ae76456c4 100644 +index 923110da6494664fef30fd20a7d9282eaac825f9..347ce89d5ece52cde057e269ace2225bc1462032 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -108,6 +108,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0099-Despawn-rate-config-options-per-projectile-type.patch b/patches/server/0099-Despawn-rate-config-options-per-projectile-type.patch index 51ce5e278..3436baff8 100644 --- a/patches/server/0099-Despawn-rate-config-options-per-projectile-type.patch +++ b/patches/server/0099-Despawn-rate-config-options-per-projectile-type.patch @@ -63,10 +63,10 @@ index 6afe37e42d88701af38df5793a9ea9d7d2cda5c5..1de27407c92d496715899fcafb3794df + // Purpur end } diff --git a/src/main/java/net/minecraft/world/entity/projectile/FireworkRocketEntity.java b/src/main/java/net/minecraft/world/entity/projectile/FireworkRocketEntity.java -index fe502e148e218ae404e0049c0251d3e3ca08c825..11befaed9c2845262607cd9e1e38a178d94883ee 100644 +index 9930f7a0681899017329bd2c599db7308310b395..df43997aef63b5afbd0b9402491652cc4555f8e5 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/FireworkRocketEntity.java +++ b/src/main/java/net/minecraft/world/entity/projectile/FireworkRocketEntity.java -@@ -355,4 +355,11 @@ public class FireworkRocketEntity extends Projectile implements ItemSupplier { +@@ -358,4 +358,11 @@ public class FireworkRocketEntity extends Projectile implements ItemSupplier { public boolean isAttackable() { return false; } @@ -79,10 +79,10 @@ index fe502e148e218ae404e0049c0251d3e3ca08c825..11befaed9c2845262607cd9e1e38a178 + // Purpur end } diff --git a/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java b/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java -index 2015223c1703935faef52a8b88263ab3f1fbe92a..3b36a5f79b830dcf0b3eb4ff278c82134a58da96 100644 +index cc288174b22f959e8ef11e43f0ea4008bae7bdc5..67e11fd3b012d74652baf5875b6bd77e6e997d9d 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java +++ b/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java -@@ -663,4 +663,11 @@ public class FishingHook extends Projectile { +@@ -666,4 +666,11 @@ public class FishingHook extends Projectile { private OpenWaterType() {} } @@ -159,10 +159,10 @@ index cfb43f277c013680a0e51fb93796e38f88b506db..97609bedb82dee6a200ff8b825622c42 if (entity != null) { this.ownerUUID = entity.getUUID(); diff --git a/src/main/java/net/minecraft/world/entity/projectile/ShulkerBullet.java b/src/main/java/net/minecraft/world/entity/projectile/ShulkerBullet.java -index a6ad012531713a651e5b36d348be435c4055190a..dd05e2130c0d8334a4d59c6e8e8fd665cd92c043 100644 +index a4591e4dc1a277a2fd0a323f3b54a107fd6598c8..ca0133bcb82df8112b63c7aef3670a8970676ef9 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/ShulkerBullet.java +++ b/src/main/java/net/minecraft/world/entity/projectile/ShulkerBullet.java -@@ -63,6 +63,13 @@ public class ShulkerBullet extends Projectile { +@@ -62,6 +62,13 @@ public class ShulkerBullet extends Projectile { projectileSource = (org.bukkit.entity.LivingEntity) owner.getBukkitEntity(); // CraftBukkit } @@ -257,10 +257,10 @@ index dcbbff3a8dfcac869f07025e0e8e3d9c47956093..d6b522aa7c7ce87caf55f91ee9d661e0 + // Purpur end } diff --git a/src/main/java/net/minecraft/world/entity/projectile/ThrownPotion.java b/src/main/java/net/minecraft/world/entity/projectile/ThrownPotion.java -index aca9d1c2cf92ee47c646de060ae8e8f4eb7b3ddd..7cb922be9b976eb06ba06f25a50599d80c385bc8 100644 +index fee09e6ff72cf1da389d5811dd005642cd50a5b4..0f387c4f6fb49c5266feeec3504a4ec7c870ba37 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/ThrownPotion.java +++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownPotion.java -@@ -306,4 +306,11 @@ public class ThrownPotion extends ThrowableItemProjectile implements ItemSupplie +@@ -305,4 +305,11 @@ public class ThrownPotion extends ThrowableItemProjectile implements ItemSupplie } } @@ -289,7 +289,7 @@ index 2867e841e73a3edfdeb83af9d96e0d0cd4116a68..8613008090a9d7cf5cd7c2a598f2c725 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e4bba9ac3a8b1f5b454a4907700a520ae76456c4..88fae3bed78da308a047aec1347d13017ebfd933 100644 +index 347ce89d5ece52cde057e269ace2225bc1462032..8847f78505aa4a9646a3d48a6c8b013bfff9c71f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -289,6 +289,35 @@ public class PurpurWorldConfig { diff --git a/patches/server/0100-Add-option-to-disable-zombie-aggressiveness-towards-.patch b/patches/server/0100-Add-option-to-disable-zombie-aggressiveness-towards-.patch index 17d343ca9..d7df9e95a 100644 --- a/patches/server/0100-Add-option-to-disable-zombie-aggressiveness-towards-.patch +++ b/patches/server/0100-Add-option-to-disable-zombie-aggressiveness-towards-.patch @@ -21,10 +21,10 @@ index 181abe014baba9ac51064c003381281a8fa43fe4..cfd1dcec3efcd4caf2431cbda99bc9f1 ignored.add("goal_selector_1"); 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 -index dac2407cc170ed59d09e3969e432e3b5aaa48a66..d49e0f8e7842e4f5fb9f97fc8ea760910a1edd52 100644 +index 05129a339c2345a72cac75def870171081d375dc..3dd6dd92f5f8334b43f50447ac259b2d06f9af95 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java +++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java -@@ -121,7 +121,19 @@ public class Drowned extends Zombie implements RangedAttackMob { +@@ -119,7 +119,19 @@ public class Drowned extends Zombie implements RangedAttackMob { this.goalSelector.addGoal(7, new RandomStrollGoal(this, 1.0D)); this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, Drowned.class)).setAlertOthers(ZombifiedPiglin.class)); this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, this::okTarget)); @@ -46,7 +46,7 @@ index dac2407cc170ed59d09e3969e432e3b5aaa48a66..d49e0f8e7842e4f5fb9f97fc8ea76091 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)); 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 f1056d9174e19266990e54a04b3f99f2ea46beb1..b59894aaa9553bf78b98a6fce7fb624088389011 100644 +index 36b3a712ba20e1f70e01f723185c67663e93371d..eaffa791ce73f6b2c2fa5b940909346e9f0fda0f 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -154,7 +154,19 @@ public class Zombie extends Monster { diff --git a/patches/server/0102-Flying-squids-Oh-my.patch b/patches/server/0102-Flying-squids-Oh-my.patch index a39c1d4da..cff5eabef 100644 --- a/patches/server/0102-Flying-squids-Oh-my.patch +++ b/patches/server/0102-Flying-squids-Oh-my.patch @@ -5,7 +5,7 @@ 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 -index da00dcb474bec9ac8b8fc3ecf530fca154348059..60737807fd2861db6c4ffb215e23f724407c069a 100644 +index 9734ed30af10832fbbede43848fd82591320d1ce..ad93a0516391761f6275c2c04cc63f7f20101ba4 100644 --- a/src/main/java/net/minecraft/world/entity/GlowSquid.java +++ b/src/main/java/net/minecraft/world/entity/GlowSquid.java @@ -43,6 +43,11 @@ public class GlowSquid extends Squid { @@ -21,10 +21,10 @@ index da00dcb474bec9ac8b8fc3ecf530fca154348059..60737807fd2861db6c4ffb215e23f724 @Override 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 45533523c5eee0431e96c01de4a64f9f0b887a2e..8381937f208a30ca492a69470cf89b1b2621657f 100644 +index 709aaa9dc834d91219ce1087d8f89ef5bf3d915c..4850960c7c4f38c7d81b8945f8c87504d5ccd0d0 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java -@@ -87,6 +87,15 @@ public class Squid extends WaterAnimal { +@@ -86,6 +86,15 @@ public class Squid extends WaterAnimal { // Stops squids from floating just over the water return super.getAxisForFluidCheck().offsetY(level.purpurConfig.squidOffsetWaterCheck); } @@ -40,7 +40,7 @@ index 45533523c5eee0431e96c01de4a64f9f0b887a2e..8381937f208a30ca492a69470cf89b1b // Purpur end @Override -@@ -161,6 +170,7 @@ public class Squid extends WaterAnimal { +@@ -160,6 +169,7 @@ public class Squid extends WaterAnimal { } if (this.isInWaterOrBubble()) { @@ -48,7 +48,7 @@ index 45533523c5eee0431e96c01de4a64f9f0b887a2e..8381937f208a30ca492a69470cf89b1b if (this.tentacleMovement < 3.1415927F) { float f = this.tentacleMovement / 3.1415927F; -@@ -317,7 +327,7 @@ public class Squid extends WaterAnimal { +@@ -319,7 +329,7 @@ public class Squid extends WaterAnimal { if (i > 100) { this.squid.setMovementVector(0.0F, 0.0F, 0.0F); diff --git a/patches/server/0104-Stonecutter-damage.patch b/patches/server/0104-Stonecutter-damage.patch index 8a3b80558..461b5abf3 100644 --- a/patches/server/0104-Stonecutter-damage.patch +++ b/patches/server/0104-Stonecutter-damage.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Stonecutter damage diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSource.java b/src/main/java/net/minecraft/world/damagesource/DamageSource.java -index 19d6165f266fcc39bc3533042109ef1b725ecb77..32bf8264fecb8873f3ffa0e57a4bb48b5517fb77 100644 +index 67e559d63c543ff716d610cb04ff9426cc20ae00..9125deb86b856bcb5e1cd779773522e2fa4cb5f9 100644 --- a/src/main/java/net/minecraft/world/damagesource/DamageSource.java +++ b/src/main/java/net/minecraft/world/damagesource/DamageSource.java @@ -39,6 +39,14 @@ public class DamageSource { @@ -24,10 +24,10 @@ index 19d6165f266fcc39bc3533042109ef1b725ecb77..32bf8264fecb8873f3ffa0e57a4bb48b private boolean bypassArmor; private boolean bypassInvul; diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 2c1358794db54433cc8d98ce30ed04039b8f67f7..b02a880dad1d7f36c918dd54788321f121053a45 100644 +index d672233bbb672ace6218ab8117714add56133685..5ee3efa484c493d911a9f46ead4cf3a0fa4a8602 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -1058,7 +1058,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i +@@ -1071,7 +1071,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i } // CraftBukkit end @@ -58,10 +58,10 @@ index ec1c04f354236af24e137865b3b311ab8eb29ac4..7d3e7c5f8f9946c35384cf18a43efbcf + // Purpur end } diff --git a/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java b/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java -index 737d0405a195d322ffe9a57acadb9f6d645c03b8..d7bdf3c2a5b99ff7adb3e960ff356a1fad169de0 100644 +index c7926d45c32a739b32d2b97b1ed2f8b89fb18620..c9428be93926c01584deb1f4b3d572fcfe60ac4c 100644 --- a/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java +++ b/src/main/java/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java -@@ -463,7 +463,7 @@ public class WalkNodeEvaluator extends NodeEvaluator { +@@ -467,7 +467,7 @@ public class WalkNodeEvaluator extends NodeEvaluator { return BlockPathTypes.DANGER_CACTUS; } @@ -70,7 +70,7 @@ index 737d0405a195d322ffe9a57acadb9f6d645c03b8..d7bdf3c2a5b99ff7adb3e960ff356a1f return BlockPathTypes.DANGER_OTHER; } -@@ -495,7 +495,7 @@ public class WalkNodeEvaluator extends NodeEvaluator { +@@ -499,7 +499,7 @@ public class WalkNodeEvaluator extends NodeEvaluator { return BlockPathTypes.POWDER_SNOW; } else if (blockState.is(Blocks.CACTUS)) { return BlockPathTypes.DAMAGE_CACTUS; diff --git a/patches/server/0105-Configurable-daylight-cycle.patch b/patches/server/0105-Configurable-daylight-cycle.patch index 5a3575004..5dfbae6f6 100644 --- a/patches/server/0105-Configurable-daylight-cycle.patch +++ b/patches/server/0105-Configurable-daylight-cycle.patch @@ -18,10 +18,10 @@ index 689ad22925b2561f7c8db961743eb1f821dbb25f..fa3c960992cc240161817e54659d83fe public ClientboundSetTimePacket(long time, long timeOfDay, boolean doDaylightCycle) { this.gameTime = time % 192000; // Paper - fix guardian beam diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 759a4a5a2ad3b7052d348c1a0be30ce02e659d1d..358cdc06b0323c966c5975978435119392bcd871 100644 +index 4708f7b2cdbd9e73c98f3dab464964b7b3d1accb..d3add7aab3127845c68b44a6443b5165cf074367 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1595,7 +1595,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0) { blockEntity.cookingProgress = Mth.clamp(blockEntity.cookingProgress - 2, (int) 0, blockEntity.cookingTotalTime); -@@ -397,6 +414,7 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit +@@ -399,6 +416,7 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit setChanged(world, pos, state); } diff --git a/patches/server/0109-Ability-to-re-add-farmland-mechanics-from-Alpha.patch b/patches/server/0109-Ability-to-re-add-farmland-mechanics-from-Alpha.patch index 1806a1d02..952935ae3 100644 --- a/patches/server/0109-Ability-to-re-add-farmland-mechanics-from-Alpha.patch +++ b/patches/server/0109-Ability-to-re-add-farmland-mechanics-from-Alpha.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Ability to re-add farmland mechanics from Alpha diff --git a/src/main/java/net/minecraft/world/level/block/FarmBlock.java b/src/main/java/net/minecraft/world/level/block/FarmBlock.java -index e102795a2464eac028b30977be8d99ceca2339f7..f55a32c7c4e260b41a36b9fc3be01edb50b4951a 100644 +index f9c363a9148d30b1ecc8f744a7eaa131a9fd1428..c61e8887e697806378686b3b1ffca2b154d1a074 100644 --- a/src/main/java/net/minecraft/world/level/block/FarmBlock.java +++ b/src/main/java/net/minecraft/world/level/block/FarmBlock.java -@@ -113,6 +113,14 @@ public class FarmBlock extends Block { +@@ -112,6 +112,14 @@ public class FarmBlock extends Block { return; } @@ -24,7 +24,7 @@ index e102795a2464eac028b30977be8d99ceca2339f7..f55a32c7c4e260b41a36b9fc3be01edb return; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ff5a726ab8735975e6c285a2dce9df6576908ac9..9e7544bd441041837df2327c363882b85b0ccc03 100644 +index 5e19075f9244ba96f2420273139c520b1c11f613..4616d5d99e08a9be8ccbee3c67046dc3226b1d7b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -397,8 +397,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0110-Add-adjustable-breeding-cooldown-to-config.patch b/patches/server/0110-Add-adjustable-breeding-cooldown-to-config.patch index a879e0e5b..cf3a0a08a 100644 --- a/patches/server/0110-Add-adjustable-breeding-cooldown-to-config.patch +++ b/patches/server/0110-Add-adjustable-breeding-cooldown-to-config.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add adjustable breeding cooldown to config diff --git a/src/main/java/net/minecraft/world/entity/animal/Animal.java b/src/main/java/net/minecraft/world/entity/animal/Animal.java -index 2bc77858b4a78e24227b4b096fd44177202d5292..b26d5482d89e28897bcc9dc8a15042a557727037 100644 +index 3d76b91f43fb2d261e270ba52fafe2648ba6abc9..7e45ace3d99bed6fc598c47ffda3c6beef202de3 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Animal.java +++ b/src/main/java/net/minecraft/world/entity/animal/Animal.java -@@ -153,7 +153,7 @@ public abstract class Animal extends AgeableMob { +@@ -152,7 +152,7 @@ public abstract class Animal extends AgeableMob { if (this.isFood(itemstack)) { int i = this.getAge(); @@ -17,7 +17,7 @@ index 2bc77858b4a78e24227b4b096fd44177202d5292..b26d5482d89e28897bcc9dc8a15042a5 this.usePlayerItem(player, hand, itemstack); this.setInLove(player); this.gameEvent(GameEvent.MOB_INTERACT, this.eyeBlockPosition()); -@@ -247,6 +247,14 @@ public abstract class Animal extends AgeableMob { +@@ -246,6 +246,14 @@ public abstract class Animal extends AgeableMob { if (entityplayer == null && other.getLoveCause() != null) { entityplayer = other.getLoveCause(); } @@ -33,10 +33,10 @@ index 2bc77858b4a78e24227b4b096fd44177202d5292..b26d5482d89e28897bcc9dc8a15042a5 entityageable.setBaby(true); entityageable.moveTo(this.getX(), this.getY(), this.getZ(), 0.0F, 0.0F); diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 8e88d2064f98ca9a4acff588bf6fe33abd1aa633..395dde0dd9dda63df441ebf78767ceaa90eafc23 100644 +index 7769befb5775df71d67b1d9b594e33be5334431b..bdd9282783382a2e6ad525ca27f1be88be4ca3c1 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -185,6 +185,49 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -183,6 +183,49 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } // Paper end - fix and optimise world upgrading @@ -86,7 +86,7 @@ index 8e88d2064f98ca9a4acff588bf6fe33abd1aa633..395dde0dd9dda63df441ebf78767ceaa public CraftWorld getWorld() { return this.world; } -@@ -320,6 +363,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -276,6 +319,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot this.paperConfig = new com.destroystokyo.paper.PaperWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName(), this.spigotConfig); // Paper this.purpurConfig = new org.purpurmc.purpur.PurpurWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName(), env); // Purpur diff --git a/patches/server/0111-Make-entity-breeding-times-configurable.patch b/patches/server/0111-Make-entity-breeding-times-configurable.patch index a7557854d..94aa871e8 100644 --- a/patches/server/0111-Make-entity-breeding-times-configurable.patch +++ b/patches/server/0111-Make-entity-breeding-times-configurable.patch @@ -22,10 +22,10 @@ index d51ab5e4dc93b805bf51f752542f53b2a97fdb20..dcc5d55a3274de1b2b22eab2ab7bf2c0 world.broadcastEntityEvent(entityvillager2, (byte) 12); return Optional.of(entityvillager2); diff --git a/src/main/java/net/minecraft/world/entity/animal/Animal.java b/src/main/java/net/minecraft/world/entity/animal/Animal.java -index b26d5482d89e28897bcc9dc8a15042a557727037..400db4ff64701e229ec208666a7acb1b28789b5f 100644 +index 7e45ace3d99bed6fc598c47ffda3c6beef202de3..4bb358a440bc99a5ecb35b25adaa7bb2b1975cca 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Animal.java +++ b/src/main/java/net/minecraft/world/entity/animal/Animal.java -@@ -42,6 +42,7 @@ public abstract class Animal extends AgeableMob { +@@ -41,6 +41,7 @@ public abstract class Animal extends AgeableMob { @Nullable public UUID loveCause; public ItemStack breedItem; // CraftBukkit - Add breedItem variable @@ -33,7 +33,7 @@ index b26d5482d89e28897bcc9dc8a15042a557727037..400db4ff64701e229ec208666a7acb1b protected Animal(EntityType type, Level world) { super(type, world); -@@ -271,8 +272,10 @@ public abstract class Animal extends AgeableMob { +@@ -270,8 +271,10 @@ public abstract class Animal extends AgeableMob { CriteriaTriggers.BRED_ANIMALS.trigger(entityplayer, this, other, entityageable); } @@ -47,10 +47,10 @@ index b26d5482d89e28897bcc9dc8a15042a557727037..400db4ff64701e229ec208666a7acb1b other.resetLove(); world.addFreshEntityWithPassengers(entityageable, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BREEDING); // CraftBukkit - added SpawnReason 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 4fc7c9c2fd2b9c083bd08fb4da9355279a94d287..a7dce3d3a0266bacd1883bfe8b47af79defcd95b 100644 +index d288cf90ffd35ee52f324670cd4369b4d15424ba..c77c9cb3445a9ec807db6f74331e6ee620dd3ff5 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java -@@ -220,6 +220,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -218,6 +218,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.beeMaxHealth); } @@ -63,10 +63,10 @@ index 4fc7c9c2fd2b9c083bd08fb4da9355279a94d287..a7dce3d3a0266bacd1883bfe8b47af79 @Override 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 3a8130f7bbf67a0426c8a2f4785c9865dc0159ce..dadea789949e65c79260f32de7d6e42ee679555e 100644 +index 94ca386af796c1dd2ebff537566486d3db428165..456b5f7aedda7f424e46f985f6b854646b2719d8 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cat.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java -@@ -150,6 +150,11 @@ public class Cat extends TamableAnimal { +@@ -152,6 +152,11 @@ public class Cat extends TamableAnimal { public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.catMaxHealth); } @@ -79,7 +79,7 @@ index 3a8130f7bbf67a0426c8a2f4785c9865dc0159ce..dadea789949e65c79260f32de7d6e42e public ResourceLocation getResourceLocation() { 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 826ffd0bec67d1239edeaddc64e2805ac884311c..1c05400d8638ca14060de1ce26f7cb151487f818 100644 +index 792ba57cb4de5c927e15655cba282866af3bcf98..002a66c13074a887b6525085ca57227ff858bac7 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Chicken.java +++ b/src/main/java/net/minecraft/world/entity/animal/Chicken.java @@ -75,6 +75,11 @@ public class Chicken extends Animal { @@ -111,10 +111,10 @@ index 732c560383da3b8a270139758f29734d73b775be..b063a74327e51b3cd27427426b92ef68 @Override 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 12e2e84e6d4d4975ee2240e6255eb5cc2c17a733..5fdea5a1e49f457a5094568854a50c3fb1059f81 100644 +index 4b42d8047f70d23eed09b6210b447ae2a272af0a..8a73267128c7e165651b97cd46f65f9cd373a1ea 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java -@@ -182,6 +182,11 @@ public class Fox extends Animal { +@@ -183,6 +183,11 @@ public class Fox extends Animal { public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.foxMaxHealth); } @@ -126,7 +126,7 @@ index 12e2e84e6d4d4975ee2240e6255eb5cc2c17a733..5fdea5a1e49f457a5094568854a50c3f // Purpur end @Override -@@ -965,8 +970,10 @@ public class Fox extends Animal { +@@ -967,8 +972,10 @@ public class Fox extends Animal { CriteriaTriggers.BRED_ANIMALS.trigger(entityplayer2, this.animal, this.partner, entityfox); } @@ -140,10 +140,10 @@ index 12e2e84e6d4d4975ee2240e6255eb5cc2c17a733..5fdea5a1e49f457a5094568854a50c3f this.partner.resetLove(); worldserver.addFreshEntityWithPassengers(entityfox, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BREEDING); // CraftBukkit - added SpawnReason diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index 6784f73bf2c2dd9a71461c66199572a5af29aede..ecc5a0c2331609954411c8239392ede20649ec2f 100644 +index d4237fce253b2414337344b327250c1db2b19dfa..d7c68775fc39222be66bc82e0e7a1b0ae3238f7a 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -@@ -85,6 +85,11 @@ public class MushroomCow extends Cow implements Shearable { +@@ -84,6 +84,11 @@ public class MushroomCow extends Cow implements Shearable { public void initAttributes() { this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.mooshroomMaxHealth); } @@ -156,10 +156,10 @@ index 6784f73bf2c2dd9a71461c66199572a5af29aede..ecc5a0c2331609954411c8239392ede2 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java -index 14897eea8446a257bbcb48cbcfd1828ab9ad0bec..d07b0a4a8cf532dd8066e111fab1a64d4b9fd739 100644 +index 5f0d2606bc9a250c35562671ba85440fab30a5b1..5aaeec3df43820bbaa839b9bfd9a756db7377cc2 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java -@@ -89,6 +89,11 @@ public class Ocelot extends Animal { +@@ -88,6 +88,11 @@ public class Ocelot extends Animal { public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.ocelotMaxHealth); } @@ -172,7 +172,7 @@ index 14897eea8446a257bbcb48cbcfd1828ab9ad0bec..d07b0a4a8cf532dd8066e111fab1a64d public boolean isTrusting() { diff --git a/src/main/java/net/minecraft/world/entity/animal/Panda.java b/src/main/java/net/minecraft/world/entity/animal/Panda.java -index 880093a2c547c49fe29aacef87320082dbd38168..67fa41c69756f234778127dd5a2ff159122da8d5 100644 +index bcbf20728b4c9a181771984c54af742f07fd9855..83fdc33da473c8ddf69bb20125bf38f6801f8fce 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Panda.java +++ b/src/main/java/net/minecraft/world/entity/animal/Panda.java @@ -137,6 +137,11 @@ public class Panda extends Animal { @@ -188,10 +188,10 @@ index 880093a2c547c49fe29aacef87320082dbd38168..67fa41c69756f234778127dd5a2ff159 @Override 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 b2963b0064c6f01adc1d8a54b7c5687c79ba6a73..ac36bd31cc81b48e14f0bb4fc683726b669673be 100644 +index 91b8117238e76c00d758180df5cfd70ae76ace22..1539668c100352f7e8980f3b9db02b6fb979299b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -@@ -191,6 +191,11 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { +@@ -189,6 +189,11 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.parrotMaxHealth); } @@ -204,7 +204,7 @@ index b2963b0064c6f01adc1d8a54b7c5687c79ba6a73..ac36bd31cc81b48e14f0bb4fc683726b @Nullable 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 284f632fcce31f180742a131cc358288aba54807..3b4ad2199f40fbf902948545908247c805a3f1fa 100644 +index 7787d30ad7bb9aa6041c369a368deb382c9554c2..93f670fe1512ec18272c2e4d71735bcbdbc87eda 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Pig.java +++ b/src/main/java/net/minecraft/world/entity/animal/Pig.java @@ -84,6 +84,11 @@ public class Pig extends Animal implements ItemSteerable, Saddleable { @@ -220,10 +220,10 @@ index 284f632fcce31f180742a131cc358288aba54807..3b4ad2199f40fbf902948545908247c8 @Override 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 1215d26bc383573e84f674c8d67768bfbe89da59..de109bea3e132e08743f0a26f18262ee9a4982bd 100644 +index b370a0c392f69a1b42a4908ae012ee4c6bf6984d..0f4a0e50e701c3fb75536e0b6d7821046e7f8f66 100644 --- a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java +++ b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java -@@ -120,6 +120,11 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -118,6 +118,11 @@ public class PolarBear extends Animal implements NeutralMob { return this.isInLove() && bear.isInLove(); } } @@ -236,10 +236,10 @@ index 1215d26bc383573e84f674c8d67768bfbe89da59..de109bea3e132e08743f0a26f18262ee @Override 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 a34fcda0ef72689d014ca8fd0a9131a66f25fb61..48f8c2aaa27756d649a17dcbae78b1d579c3274f 100644 +index 5b30a1d34d7efb1a5c86ae187027313fec1fd700..8d44949c54f9cba0848b4f7b82c573325c134d9d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java +++ b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java -@@ -140,6 +140,11 @@ public class Rabbit extends Animal { +@@ -141,6 +141,11 @@ public class Rabbit extends Animal { public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.rabbitMaxHealth); } @@ -268,10 +268,10 @@ index 9d6765e2bd6bfdd39728bdd14cabbe4bf33d96ac..86f398fc79dcc5dd24a61483d292e228 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -index 89a95622465a203efcecaf4c46e5b5e0419f84d3..69cdf5540c654d730f4fc45e418c4c2ae532d2bc 100644 +index 54ad776603158f101c0199395f70dadb80301a8d..e3bf2c2bc16bc03c17d90f2ce1620c6b895e9bf7 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -@@ -106,6 +106,11 @@ public class Turtle extends Animal { +@@ -104,6 +104,11 @@ public class Turtle extends Animal { public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.turtleMaxHealth); } @@ -284,10 +284,10 @@ index 89a95622465a203efcecaf4c46e5b5e0419f84d3..69cdf5540c654d730f4fc45e418c4c2a public void setHomePos(BlockPos pos) { 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 0336bc717b22a2747cb233268dc5ececab56cee2..749e007fc0a703ca9baa58490b3b7641611d2aa4 100644 +index e9a13c45024ad7683bd6e1afc3cd38825036305c..ed6a552fab01b1391cf98fdbb51f7f47f72de932 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -@@ -124,6 +124,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -127,6 +127,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.wolfMaxHealth); } @@ -300,10 +300,10 @@ index 0336bc717b22a2747cb233268dc5ececab56cee2..749e007fc0a703ca9baa58490b3b7641 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index 12a227990593c471238054570ae9a103f4da5d84..ea1fba058b28631a85dd5ec6153620d67c4ca5f2 100644 +index 7aa48291644d99bf713750478e172832f21290b0..a554d836635826bbe3fc562675ae982f33b409d1 100644 --- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -@@ -122,6 +122,11 @@ public class Axolotl extends Animal implements LerpingModel, Bucketable { +@@ -124,6 +124,11 @@ public class Axolotl extends Animal implements LerpingModel, Bucketable { public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.axolotlMaxHealth); } @@ -316,10 +316,10 @@ index 12a227990593c471238054570ae9a103f4da5d84..ea1fba058b28631a85dd5ec6153620d6 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index 0dca918e98182faf90f09d2ecf8985796d7b2fb5..ca545e7337ff58654f136d1edd8588bf92ca4977 100644 +index c5a86e91465e725fd11d19fd668c1ba6bbe981ac..a697a094679c61e357177bc22e628c347b39a4d9 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -@@ -94,6 +94,11 @@ public class Goat extends Animal { +@@ -89,6 +89,11 @@ public class Goat extends Animal { public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.goatMaxHealth); } @@ -364,10 +364,10 @@ index 9f7203608e15fdce1bfbaf419838768763d61378..2c5cb1b759a0b6e0233345da5a968288 @Override 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 f6bd1eff78b3c879ecc439bab3b5aa7674e74044..fe6ce743b51c1ff74e8a1233cf0217c048b8577c 100644 +index 93c6e0d538dfa796b5a5b4f57d3f76fa2eef77ab..5553cffdbaf308c543d0afed467acd3e6a0f8956 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -@@ -132,6 +132,11 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { +@@ -131,6 +131,11 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { public double generateRandomSpeed() { return generateRandomSpeed(this.level.purpurConfig.llamaMovementSpeedMin, this.level.purpurConfig.llamaMovementSpeedMax); } @@ -444,10 +444,10 @@ index 48b72eb4051d612648a1978b38299c0c37a3a289..b6d9ba8dd5694952ca2eba54726ac5e5 public static AttributeSupplier.Builder createAttributes() { 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 0ceeca25fddea15ba5860f2745dc37a29845cb3e..003eced9d2dcc9cba200a12fe43035f125df8be3 100644 +index e3f7816bb261c7772d86bd117ce30a53e77f44d1..0046bc4f7a1fb7bb40da955570d56c7cb87aa687 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Strider.java +++ b/src/main/java/net/minecraft/world/entity/monster/Strider.java -@@ -117,6 +117,11 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { +@@ -116,6 +116,11 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.striderMaxHealth); } diff --git a/patches/server/0112-Apply-display-names-from-item-forms-of-entities-to-e.patch b/patches/server/0112-Apply-display-names-from-item-forms-of-entities-to-e.patch index c4910c236..5d25e48ca 100644 --- a/patches/server/0112-Apply-display-names-from-item-forms-of-entities-to-e.patch +++ b/patches/server/0112-Apply-display-names-from-item-forms-of-entities-to-e.patch @@ -25,7 +25,7 @@ index dc1630a1a769f848059f576c3d1220a216b5465c..50370dc8697569a4e5cf8ec3714d227a } 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 0f8513ee6f56148cf63f4cd6a60acb7f70280ff1..e4c8b622cf3c7c57ada4c2e20a4b4a0f0b17de12 100644 +index f134a2e68d50fba021b19fac4c75fb35d0e252c6..37133b573d41f1ce67cf1fe6ae7429c52b9bbd0a 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java +++ b/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java @@ -265,7 +265,13 @@ public class ItemFrame extends HangingEntity { @@ -63,10 +63,10 @@ index 359f6cf63319ad9f125cdea848852def8a1ec1c8..b5ff43e866c3c43085e91b38c31c4845 } 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 4b38f8186dcd9a98a5413a51c5563c496ff04d2c..fe5bf9557b58bdc7aac319491bf2e0e58c5bd7fd 100644 +index e4febdebc760f9babd77c55e87acccdc1625f0a5..04f9ef39aa4c27200c4c55c50f6eabc0f420cf80 100644 --- a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java +++ b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java -@@ -208,7 +208,13 @@ public class Boat extends Entity { +@@ -207,7 +207,13 @@ public class Boat extends Entity { } // CraftBukkit end if (!flag && this.level.getGameRules().getBoolean(GameRules.RULE_DOENTITYDROPS)) { @@ -142,7 +142,7 @@ index 0284201b0bb0f5c9a4a2393cf0d83e8e21262df3..1f46a2be362ed5f60a7ca75916fe7bd4 if (((HangingEntity) object).survives()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5188492e3cedd85aa891911fd30b0a30fc98b318..f0ec5498b5a814f644cb105dc3e6ec927d0dffe4 100644 +index 662167abae0bfd964fb08741b4660ba3db068eca..bb21296b581ba3674425d32665d8a1f30063e177 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -96,8 +96,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0114-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch b/patches/server/0114-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch index 107384e8a..335ef6308 100644 --- a/patches/server/0114-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch +++ b/patches/server/0114-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch @@ -8,10 +8,10 @@ This should help to reduce the amount of dirt, gravel, grass, and etc. 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 -index 83341eaa1162c311d6e1649fe9b6743597077e35..6a4f1e85b2d19dee943cd63ccce05fda2a5fb1eb 100644 +index c4f5d033e381aa501fd689a297fb40c713f12c2a..086d98da914ca958f91ce1a1d7aea7af9e0e5a03 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -464,7 +464,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -463,7 +463,7 @@ public class EnderMan extends Monster implements NeutralMob { @Override public boolean requiresCustomPersistence() { diff --git a/patches/server/0117-Add-boat-fall-damage-config.patch b/patches/server/0117-Add-boat-fall-damage-config.patch index 63dcdf635..50ac77c52 100644 --- a/patches/server/0117-Add-boat-fall-damage-config.patch +++ b/patches/server/0117-Add-boat-fall-damage-config.patch @@ -5,10 +5,10 @@ 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 -index 295658d4b479e8a3e825f0b5ce5dfc2c7c55a0fe..dfe547b7a2caa2ecfdddef9b9a49be40d26c5da8 100644 +index a27663768a6c3ac71a4dd86286f8db5feba075ef..79066cbf1b5a35b75f0352f2df0fb0cd5c77a343 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1018,7 +1018,16 @@ public class ServerPlayer extends Player { +@@ -1016,7 +1016,16 @@ public class ServerPlayer extends Player { if (this.isInvulnerableTo(source)) { return false; } else { @@ -27,7 +27,7 @@ index 295658d4b479e8a3e825f0b5ce5dfc2c7c55a0fe..dfe547b7a2caa2ecfdddef9b9a49be40 if (!flag && isSpawnInvulnerable() && source != DamageSource.OUT_OF_WORLD) { // Purpur diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2e177ec703bda4375d4c8d59b410fb1842b679d9..16b8fa1509f542c715ba18d2966b36afd0ce4b25 100644 +index 367ce7f6003be23ffe2228e26365cb894089d4b4..2c0ac3fa1ce94c3b09dd55aa901e9e986ffb4338 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -106,6 +106,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0120-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch b/patches/server/0120-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch index 6b94d6354..54e80288a 100644 --- a/patches/server/0120-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch +++ b/patches/server/0120-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch @@ -8,10 +8,10 @@ farm Nether Wart. Reimplemented based on a feature of the carpet-extra mod. diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java b/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java -index 1a96d3302c4d57cb0c2418c00598083d271316da..7d4457da2fe82ebe91b99cf91ae5e70b491d34e7 100644 +index 35d6951cf30c929f34853599aef76adcd8757946..fdfa36d3e148e8638109acaf4a0ea8a577985b61 100644 --- a/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java +++ b/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java -@@ -34,6 +34,7 @@ public class HarvestFarmland extends Behavior { +@@ -33,6 +33,7 @@ public class HarvestFarmland extends Behavior { private long nextOkStartTime; private int timeWorkedSoFar; private final List validFarmlandAroundVillager = Lists.newArrayList(); @@ -19,7 +19,7 @@ index 1a96d3302c4d57cb0c2418c00598083d271316da..7d4457da2fe82ebe91b99cf91ae5e70b public HarvestFarmland() { super(ImmutableMap.of(MemoryModuleType.LOOK_TARGET, MemoryStatus.VALUE_ABSENT, MemoryModuleType.WALK_TARGET, MemoryStatus.VALUE_ABSENT, MemoryModuleType.SECONDARY_JOB_SITE, MemoryStatus.VALUE_PRESENT)); -@@ -42,9 +43,10 @@ public class HarvestFarmland extends Behavior { +@@ -41,9 +42,10 @@ public class HarvestFarmland extends Behavior { protected boolean checkExtraStartConditions(ServerLevel world, Villager entity) { if (!world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { return false; @@ -31,7 +31,7 @@ index 1a96d3302c4d57cb0c2418c00598083d271316da..7d4457da2fe82ebe91b99cf91ae5e70b BlockPos.MutableBlockPos blockposition_mutableblockposition = entity.blockPosition().mutable(); this.validFarmlandAroundVillager.clear(); -@@ -75,6 +77,7 @@ public class HarvestFarmland extends Behavior { +@@ -74,6 +76,7 @@ public class HarvestFarmland extends Behavior { Block block = iblockdata.getBlock(); Block block1 = world.getBlockState(pos.below()).getBlock(); @@ -39,7 +39,7 @@ index 1a96d3302c4d57cb0c2418c00598083d271316da..7d4457da2fe82ebe91b99cf91ae5e70b return block instanceof CropBlock && ((CropBlock) block).isMaxAge(iblockdata) || iblockdata.isAir() && block1 instanceof FarmBlock; } -@@ -100,7 +103,7 @@ public class HarvestFarmland extends Behavior { +@@ -99,7 +102,7 @@ public class HarvestFarmland extends Behavior { Block block = iblockdata.getBlock(); Block block1 = worldserver.getBlockState(this.aboveFarmlandPos.below()).getBlock(); @@ -48,7 +48,7 @@ index 1a96d3302c4d57cb0c2418c00598083d271316da..7d4457da2fe82ebe91b99cf91ae5e70b // CraftBukkit start if (!org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(entityvillager, this.aboveFarmlandPos, Blocks.AIR.defaultBlockState()).isCancelled()) { worldserver.destroyBlock(this.aboveFarmlandPos, true, entityvillager); -@@ -108,7 +111,7 @@ public class HarvestFarmland extends Behavior { +@@ -107,7 +110,7 @@ public class HarvestFarmland extends Behavior { // CraftBukkit end } @@ -57,7 +57,7 @@ index 1a96d3302c4d57cb0c2418c00598083d271316da..7d4457da2fe82ebe91b99cf91ae5e70b SimpleContainer inventorysubcontainer = entityvillager.getInventory(); for (int j = 0; j < inventorysubcontainer.getContainerSize(); ++j) { -@@ -118,6 +121,14 @@ public class HarvestFarmland extends Behavior { +@@ -117,6 +120,14 @@ public class HarvestFarmland extends Behavior { if (!itemstack.isEmpty()) { // CraftBukkit start Block planted = null; @@ -72,7 +72,7 @@ index 1a96d3302c4d57cb0c2418c00598083d271316da..7d4457da2fe82ebe91b99cf91ae5e70b if (itemstack.is(Items.WHEAT_SEEDS)) { planted = Blocks.WHEAT; flag = true; -@@ -141,7 +152,7 @@ public class HarvestFarmland extends Behavior { +@@ -140,7 +151,7 @@ public class HarvestFarmland extends Behavior { } if (flag) { @@ -145,10 +145,10 @@ index b615dc2a2127f0874775d1707e96edfb4d95b987..72ae6b3282aac806ae11b87024ee940e brain.setMemory(MemoryModuleType.SECONDARY_JOB_SITE, list); } else { 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 14ba8dcf9392e3bfdb92663f98455cb9c0f44c10..72f067f1d88a77b9ad571bac84cecf10cc63c975 100644 +index 094fd4289bc42df6af6740acacd4f51ab6b668e0..bbb8dde583b1a40c305bb110313e7121ad354dc3 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -222,7 +222,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -224,7 +224,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler brain.addActivity(Activity.PLAY, VillagerGoalPackages.getPlayPackage(0.5F)); } else { brain.setSchedule(Schedule.VILLAGER_DEFAULT); @@ -157,7 +157,7 @@ index 14ba8dcf9392e3bfdb92663f98455cb9c0f44c10..72f067f1d88a77b9ad571bac84cecf10 } brain.addActivity(Activity.CORE, VillagerGoalPackages.getCorePackage(villagerprofession, 0.5F)); -@@ -987,6 +987,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -989,6 +989,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } public boolean hasFarmSeeds() { diff --git a/patches/server/0123-Configurable-chance-for-wolves-to-spawn-rabid.patch b/patches/server/0123-Configurable-chance-for-wolves-to-spawn-rabid.patch index 95e07a8d9..3e557a43b 100644 --- a/patches/server/0123-Configurable-chance-for-wolves-to-spawn-rabid.patch +++ b/patches/server/0123-Configurable-chance-for-wolves-to-spawn-rabid.patch @@ -7,10 +7,10 @@ Configurable chance to spawn a wolf that is rabid. 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 -index 749e007fc0a703ca9baa58490b3b7641611d2aa4..6be2d2c2b3eb33cb8657a2cdfb49c49cb83964c2 100644 +index ed6a552fab01b1391cf98fdbb51f7f47f72de932..cbd5f90f5005187c61e47e6f6fa74fb19d67a4d4 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -@@ -11,6 +11,7 @@ import net.minecraft.network.syncher.EntityDataAccessor; +@@ -11,15 +11,19 @@ import net.minecraft.network.syncher.EntityDataAccessor; import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.SynchedEntityData; import net.minecraft.server.level.ServerLevel; @@ -18,7 +18,6 @@ index 749e007fc0a703ca9baa58490b3b7641611d2aa4..6be2d2c2b3eb33cb8657a2cdfb49c49c import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvents; import net.minecraft.tags.BlockTags; -@@ -18,9 +19,12 @@ import net.minecraft.tags.Tag; import net.minecraft.util.Mth; import net.minecraft.util.TimeUtil; import net.minecraft.util.valueproviders.UniformInt; @@ -31,7 +30,7 @@ index 749e007fc0a703ca9baa58490b3b7641611d2aa4..6be2d2c2b3eb33cb8657a2cdfb49c49c import net.minecraft.world.entity.AgeableMob; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityDimensions; -@@ -30,6 +34,7 @@ import net.minecraft.world.entity.Mob; +@@ -29,6 +33,7 @@ import net.minecraft.world.entity.Mob; import net.minecraft.world.entity.MobSpawnType; import net.minecraft.world.entity.NeutralMob; import net.minecraft.world.entity.Pose; @@ -39,7 +38,7 @@ index 749e007fc0a703ca9baa58490b3b7641611d2aa4..6be2d2c2b3eb33cb8657a2cdfb49c49c import net.minecraft.world.entity.TamableAnimal; import net.minecraft.world.entity.ai.attributes.AttributeSupplier; import net.minecraft.world.entity.ai.attributes.Attributes; -@@ -38,6 +43,7 @@ import net.minecraft.world.entity.ai.goal.BegGoal; +@@ -37,6 +42,7 @@ import net.minecraft.world.entity.ai.goal.BegGoal; import net.minecraft.world.entity.ai.goal.BreedGoal; import net.minecraft.world.entity.ai.goal.FloatGoal; import net.minecraft.world.entity.ai.goal.FollowOwnerGoal; @@ -54,8 +53,8 @@ index 749e007fc0a703ca9baa58490b3b7641611d2aa4..6be2d2c2b3eb33cb8657a2cdfb49c49c +import net.minecraft.world.level.ServerLevelAccessor; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.gameevent.GameEvent; - import net.minecraft.world.phys.Vec3; -@@ -82,6 +89,37 @@ public class Wolf extends TamableAnimal implements NeutralMob { + import net.minecraft.world.level.pathfinder.BlockPathTypes; +@@ -83,6 +90,37 @@ public class Wolf extends TamableAnimal implements NeutralMob { return entitytypes == EntityType.SHEEP || entitytypes == EntityType.RABBIT || entitytypes == EntityType.FOX; }; @@ -93,7 +92,7 @@ index 749e007fc0a703ca9baa58490b3b7641611d2aa4..6be2d2c2b3eb33cb8657a2cdfb49c49c private static final float START_HEALTH = 8.0F; private static final float TAME_HEALTH = 20.0F; private float interestedAngle; -@@ -129,6 +167,37 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -132,6 +170,37 @@ public class Wolf extends TamableAnimal implements NeutralMob { public int getPurpurBreedTime() { return this.level.purpurConfig.wolfBreedingTicks; } @@ -131,15 +130,15 @@ index 749e007fc0a703ca9baa58490b3b7641611d2aa4..6be2d2c2b3eb33cb8657a2cdfb49c49c // Purpur end @Override -@@ -137,6 +206,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { - this.goalSelector.addGoal(1, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur +@@ -141,6 +210,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { + this.goalSelector.addGoal(1, new Wolf.WolfPanicGoal(1.5D)); this.goalSelector.addGoal(2, new SitWhenOrderedToGoal(this)); this.goalSelector.addGoal(3, new Wolf.WolfAvoidEntityGoal<>(this, Llama.class, 24.0F, 1.5D, 1.5D)); + this.goalSelector.addGoal(3, new AvoidRabidWolfGoal(this, 24.0F, 1.5D, 1.5D)); // Purpur this.goalSelector.addGoal(4, new LeapAtTargetGoal(this, 0.4F)); this.goalSelector.addGoal(5, new MeleeAttackGoal(this, 1.0D, true)); this.goalSelector.addGoal(6, new FollowOwnerGoal(this, 1.0D, 10.0F, 2.0F, false)); -@@ -150,7 +220,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -154,7 +224,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { this.targetSelector.addGoal(2, new OwnerHurtTargetGoal(this)); this.targetSelector.addGoal(3, (new HurtByTargetGoal(this, new Class[0])).setAlertOthers()); this.targetSelector.addGoal(4, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, this::isAngryAt)); @@ -148,7 +147,7 @@ index 749e007fc0a703ca9baa58490b3b7641611d2aa4..6be2d2c2b3eb33cb8657a2cdfb49c49c this.targetSelector.addGoal(6, new NonTameRandomTargetGoal<>(this, Turtle.class, false, Turtle.BABY_ON_LAND_SELECTOR)); this.targetSelector.addGoal(7, new NearestAttackableTargetGoal<>(this, AbstractSkeleton.class, false)); this.targetSelector.addGoal(8, new ResetUniversalAngerTargetGoal<>(this, true)); -@@ -195,6 +265,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -199,6 +269,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { public void addAdditionalSaveData(CompoundTag nbt) { super.addAdditionalSaveData(nbt); nbt.putByte("CollarColor", (byte) this.getCollarColor().getId()); @@ -156,7 +155,7 @@ index 749e007fc0a703ca9baa58490b3b7641611d2aa4..6be2d2c2b3eb33cb8657a2cdfb49c49c this.addPersistentAngerSaveData(nbt); } -@@ -204,6 +275,10 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -208,6 +279,10 @@ public class Wolf extends TamableAnimal implements NeutralMob { if (nbt.contains("CollarColor", 99)) { this.setCollarColor(DyeColor.byId(nbt.getInt("CollarColor"))); } @@ -167,7 +166,7 @@ index 749e007fc0a703ca9baa58490b3b7641611d2aa4..6be2d2c2b3eb33cb8657a2cdfb49c49c this.readPersistentAngerSaveData(this.level, nbt); } -@@ -248,6 +323,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -252,6 +327,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { public void tick() { super.tick(); if (this.isAlive()) { @@ -179,7 +178,7 @@ index 749e007fc0a703ca9baa58490b3b7641611d2aa4..6be2d2c2b3eb33cb8657a2cdfb49c49c this.interestedAngleO = this.interestedAngle; if (this.isInterested()) { this.interestedAngle += (1.0F - this.interestedAngle) * 0.4F; -@@ -445,6 +525,20 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -452,6 +532,20 @@ public class Wolf extends TamableAnimal implements NeutralMob { return InteractionResult.SUCCESS; } diff --git a/patches/server/0124-Configurable-default-collar-color.patch b/patches/server/0124-Configurable-default-collar-color.patch index cb5dd3df2..1fb024370 100644 --- a/patches/server/0124-Configurable-default-collar-color.patch +++ b/patches/server/0124-Configurable-default-collar-color.patch @@ -7,10 +7,10 @@ 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. 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 dadea789949e65c79260f32de7d6e42ee679555e..0cddd8e8ccd7d7d5c38802116f9aaadb927224c1 100644 +index 456b5f7aedda7f424e46f985f6b854646b2719d8..b4e482a28b1c7f1f46f31faa6466fb54a7991835 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cat.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java -@@ -372,6 +372,14 @@ public class Cat extends TamableAnimal { +@@ -374,6 +374,14 @@ public class Cat extends TamableAnimal { return Mth.lerp(tickDelta, this.relaxStateOneAmountO, this.relaxStateOneAmount); } @@ -26,10 +26,10 @@ index dadea789949e65c79260f32de7d6e42ee679555e..0cddd8e8ccd7d7d5c38802116f9aaadb public Cat getBreedOffspring(ServerLevel world, AgeableMob entity) { Cat entitycat = (Cat) EntityType.CAT.create(world); 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 6be2d2c2b3eb33cb8657a2cdfb49c49cb83964c2..0ded0de33fb53d827f2cdbfa5472c3469ee5a329 100644 +index cbd5f90f5005187c61e47e6f6fa74fb19d67a4d4..b9567d4d6c03124d4eaa3194c97a170277c64bbe 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -@@ -198,6 +198,12 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -201,6 +201,12 @@ public class Wolf extends TamableAnimal implements NeutralMob { this.updatePathfinders(false); return super.finalizeSpawn(world, difficulty, type, data, nbt); } diff --git a/patches/server/0127-Implement-TPSBar.patch b/patches/server/0127-Implement-TPSBar.patch index b724655d7..be07a86e8 100644 --- a/patches/server/0127-Implement-TPSBar.patch +++ b/patches/server/0127-Implement-TPSBar.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Implement TPSBar diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index 40735237cc87a476d08f1ffcb1b67ce563091230..3156e7e43a5114aaaa1276b024f4ec45e797de88 100644 +index 362fd34016b83ba346a43abb6acf38d887918437..c137f5299e4a9e2f33aeef77818c62c3805bdc0d 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java -@@ -208,6 +208,7 @@ public class Commands { +@@ -210,6 +210,7 @@ public class Commands { org.purpurmc.purpur.command.CreditsCommand.register(this.dispatcher); // Purpur org.purpurmc.purpur.command.DemoCommand.register(this.dispatcher); // Purpur org.purpurmc.purpur.command.PingCommand.register(this.dispatcher); // Purpur @@ -17,10 +17,10 @@ index 40735237cc87a476d08f1ffcb1b67ce563091230..3156e7e43a5114aaaa1276b024f4ec45 if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 358cdc06b0323c966c5975978435119392bcd871..196ec456e9773be38d352093768244989edf6fe4 100644 +index d3add7aab3127845c68b44a6443b5165cf074367..257226e9ac530482149058986bb81bd699b6a6ed 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1135,6 +1135,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop cachedSingleHashSet; // Paper -@@ -477,6 +478,7 @@ public class ServerPlayer extends Player { +@@ -475,6 +476,7 @@ public class ServerPlayer extends Player { } } @@ -60,7 +60,7 @@ index 36e75498ba1fecfd85e2de1cc5b13e4039575658..58b475f26b1e1e2c76cab0e61125846f } @Override -@@ -537,6 +539,7 @@ public class ServerPlayer extends Player { +@@ -535,6 +537,7 @@ public class ServerPlayer extends Player { } this.getBukkitEntity().setExtraData(nbt); // CraftBukkit @@ -83,7 +83,7 @@ index 36e75498ba1fecfd85e2de1cc5b13e4039575658..58b475f26b1e1e2c76cab0e61125846f // Purpur end } diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 1d3692d8d533bb4c3ac18f8837aa44f8704c10be..a088205b5c56595e37ad2e725dcfe31849fe1d96 100644 +index 6e7aeddd827ce3ca0f6b2e4e04de41837b500374..c6a264b004d94d31d29827bd2b56c5a4952ba78a 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -486,6 +486,7 @@ public abstract class PlayerList { @@ -155,16 +155,17 @@ index bd4c8c087b5468e5cde5e2cc017ae6187aef51bb..1eb8d599ebb70313fda467d943888f13 public static boolean enderChestPermissionRows = false; diff --git a/src/main/java/org/purpurmc/purpur/command/TPSBarCommand.java b/src/main/java/org/purpurmc/purpur/command/TPSBarCommand.java new file mode 100644 -index 0000000000000000000000000000000000000000..3de9dfba6bc7c438c093a8dca1f647f6c3de3c08 +index 0000000000000000000000000000000000000000..7c367d17fa843d4d7562d05780ecffd47400fc13 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/command/TPSBarCommand.java -@@ -0,0 +1,42 @@ +@@ -0,0 +1,43 @@ +package org.purpurmc.purpur.command; + +import com.mojang.brigadier.CommandDispatcher; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.NamedTextColor; +import net.kyori.adventure.text.minimessage.MiniMessage; ++import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; +import net.minecraft.commands.CommandSourceStack; +import net.minecraft.commands.Commands; +import net.minecraft.commands.arguments.EntityArgument; @@ -191,10 +192,10 @@ index 0000000000000000000000000000000000000000..3de9dfba6bc7c438c093a8dca1f647f6 + boolean result = TPSBarTask.instance().togglePlayer(player.getBukkitEntity()); + player.tpsBar(result); + -+ Component output = MiniMessage.get().parse(PurpurConfig.tpsbarCommandOutput, -+ "onoff", Component.translatable(result ? "options.on" : "options.off") -+ .color(result ? NamedTextColor.GREEN : NamedTextColor.RED), -+ "target", player.getGameProfile().getName()); ++ Component output = MiniMessage.miniMessage().deserialize(PurpurConfig.tpsbarCommandOutput, ++ Placeholder.component("onoff", Component.translatable(result ? "options.on" : "options.off") ++ .color(result ? NamedTextColor.GREEN : NamedTextColor.RED)), ++ Placeholder.parsed("target", player.getGameProfile().getName())); + + sender.sendSuccess(output, false); + } @@ -318,7 +319,7 @@ index 0000000000000000000000000000000000000000..d38b3c4a722396cc3b61a9a8ed7e39ce +} diff --git a/src/main/java/org/purpurmc/purpur/task/TPSBarTask.java b/src/main/java/org/purpurmc/purpur/task/TPSBarTask.java new file mode 100644 -index 0000000000000000000000000000000000000000..6c4d5167a9d965edbb25f4c24e6bb885afe281ca +index 0000000000000000000000000000000000000000..8769993e7ca59da309087051a3cd38fc562c15d1 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/task/TPSBarTask.java @@ -0,0 +1,142 @@ @@ -327,7 +328,7 @@ index 0000000000000000000000000000000000000000..6c4d5167a9d965edbb25f4c24e6bb885 +import net.kyori.adventure.bossbar.BossBar; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.minimessage.MiniMessage; -+import net.kyori.adventure.text.minimessage.Template; ++import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; +import org.purpurmc.purpur.PurpurConfig; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; @@ -354,10 +355,10 @@ index 0000000000000000000000000000000000000000..6c4d5167a9d965edbb25f4c24e6bb885 + void updateBossBar(BossBar bossbar, Player player) { + bossbar.progress(getBossBarProgress()); + bossbar.color(getBossBarColor()); -+ bossbar.name(MiniMessage.get().parse(PurpurConfig.commandTPSBarTitle, -+ Template.of("tps", getTPSColor()), -+ Template.of("mspt", getMSPTColor()), -+ Template.of("ping", getPingColor(player.getPing())) ++ bossbar.name(MiniMessage.miniMessage().deserialize(PurpurConfig.commandTPSBarTitle, ++ Placeholder.component("tps", getTPSColor()), ++ Placeholder.component("mspt", getMSPTColor()), ++ Placeholder.component("ping", getPingColor(player.getPing())) + )); + } + @@ -433,7 +434,7 @@ index 0000000000000000000000000000000000000000..6c4d5167a9d965edbb25f4c24e6bb885 + } else { + color = PurpurConfig.commandTPSBarTextColorLow; + } -+ return MiniMessage.get().parse(color, Template.of("text", String.format("%.2f", tps))); ++ return MiniMessage.miniMessage().deserialize(color, Placeholder.parsed("text", String.format("%.2f", tps))); + } + + private Component getMSPTColor() { @@ -445,7 +446,7 @@ index 0000000000000000000000000000000000000000..6c4d5167a9d965edbb25f4c24e6bb885 + } else { + color = PurpurConfig.commandTPSBarTextColorLow; + } -+ return MiniMessage.get().parse(color, Template.of("text", String.format("%.2f", mspt))); ++ return MiniMessage.miniMessage().deserialize(color, Placeholder.parsed("text", String.format("%.2f", mspt))); + } + + private Component getPingColor(int ping) { @@ -457,7 +458,7 @@ index 0000000000000000000000000000000000000000..6c4d5167a9d965edbb25f4c24e6bb885 + } else { + color = PurpurConfig.commandTPSBarTextColorLow; + } -+ return MiniMessage.get().parse(color, Template.of("text", String.format("%s", ping))); ++ return MiniMessage.miniMessage().deserialize(color, Placeholder.parsed("text", String.format("%s", ping))); + } + + public enum FillMode { diff --git a/patches/server/0128-Striders-give-saddle-back.patch b/patches/server/0128-Striders-give-saddle-back.patch index 9000fee06..ba6d29dbc 100644 --- a/patches/server/0128-Striders-give-saddle-back.patch +++ b/patches/server/0128-Striders-give-saddle-back.patch @@ -5,10 +5,10 @@ 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 -index 003eced9d2dcc9cba200a12fe43035f125df8be3..a32b8d5c864381992f9b468f16b54a538fc96109 100644 +index 0046bc4f7a1fb7bb40da955570d56c7cb87aa687..bec84c1dba34d61de9199b1b46cad49d46ee9731 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Strider.java +++ b/src/main/java/net/minecraft/world/entity/monster/Strider.java -@@ -454,6 +454,19 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { +@@ -453,6 +453,19 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { public InteractionResult mobInteract(Player player, InteractionHand hand) { boolean flag = this.isFood(player.getItemInHand(hand)); diff --git a/patches/server/0129-PlayerBookTooLargeEvent.patch b/patches/server/0129-PlayerBookTooLargeEvent.patch index b4b35596c..dfe5bdf3f 100644 --- a/patches/server/0129-PlayerBookTooLargeEvent.patch +++ b/patches/server/0129-PlayerBookTooLargeEvent.patch @@ -5,10 +5,10 @@ Subject: [PATCH] PlayerBookTooLargeEvent diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index ffc7b49f4b3a783e37670efa935501295b6660a5..7aed16c2ab8cef0b7d0eef4b8b5e0845d45b79ab 100644 +index c0889697ed81298b66e418d53abd7598e1a6dc3f..d68de70beb0634004224fe082566f33484924b97 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1159,10 +1159,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -1153,10 +1153,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser int maxBookPageSize = com.destroystokyo.paper.PaperConfig.maxBookPageSize; double multiplier = Math.max(0.3D, Math.min(1D, com.destroystokyo.paper.PaperConfig.maxBookTotalSizeMultiplier)); long byteAllowed = maxBookPageSize; @@ -21,7 +21,7 @@ index ffc7b49f4b3a783e37670efa935501295b6660a5..7aed16c2ab8cef0b7d0eef4b8b5e0845 server.scheduleOnMain(() -> this.disconnect("Book too large!", org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION)); // Paper - kick event cause return; } -@@ -1186,6 +1188,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -1180,6 +1182,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser if (byteTotal > byteAllowed) { ServerGamePacketListenerImpl.LOGGER.warn(this.player.getScoreboardName() + " tried to send too large of a book. Book Size: " + byteTotal + " - Allowed: "+ byteAllowed + " - Pages: " + pageList.size()); diff --git a/patches/server/0130-Full-netherite-armor-grants-fire-resistance.patch b/patches/server/0130-Full-netherite-armor-grants-fire-resistance.patch index 8b97a4dfa..e61e5472b 100644 --- a/patches/server/0130-Full-netherite-armor-grants-fire-resistance.patch +++ b/patches/server/0130-Full-netherite-armor-grants-fire-resistance.patch @@ -5,10 +5,10 @@ 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 -index b08028f67441051083a08110c1bfaff288ae9591..36f9e0c9fd1ad9550d454317ee011da6450abf4a 100644 +index cbe87a8da6ecfb9cb947acb80ab8c76f8a09460f..dcfb5cd4f069136a4e5507c6777d0841457a893d 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -358,6 +358,16 @@ public abstract class Player extends LivingEntity { +@@ -359,6 +359,16 @@ public abstract class Player extends LivingEntity { this.addEffect(new MobEffectInstance(MobEffects.WATER_BREATHING, 200, 0, false, false, true), org.bukkit.event.entity.EntityPotionEffectEvent.Cause.TURTLE_HELMET); // CraftBukkit } diff --git a/patches/server/0132-Add-mobGriefing-bypass-to-everything-affected.patch b/patches/server/0132-Add-mobGriefing-bypass-to-everything-affected.patch index f85f3e458..9a86cda14 100644 --- a/patches/server/0132-Add-mobGriefing-bypass-to-everything-affected.patch +++ b/patches/server/0132-Add-mobGriefing-bypass-to-everything-affected.patch @@ -5,10 +5,10 @@ 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 -index 959e404537c9f6c05b36fc811d3aff3ceb0e6478..f7c6633733460bdfe0a02255f9be5ac385ec915a 100644 +index e39d333c10d74be81da173622b5e033bfde9cf3a..dace52b3cae2ce20c10080612bf6d6b09e82bea1 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1691,7 +1691,7 @@ public abstract class LivingEntity extends Entity { +@@ -1694,7 +1694,7 @@ public abstract class LivingEntity extends Entity { boolean flag = false; if (this.dead && adversary instanceof WitherBoss) { // Paper @@ -18,7 +18,7 @@ index 959e404537c9f6c05b36fc811d3aff3ceb0e6478..f7c6633733460bdfe0a02255f9be5ac3 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 -index f7d588198876082c456adfe8aba8e3150620e2d2..e569ca15ded9dc4f85dd9d6431470be6844ed593 100644 +index eacba5f8e426076b4b438b9ebc5bb8c937a786fa..a7cb8255cfda572ba77d3350703c03c08d4eaf42 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -658,7 +658,7 @@ public abstract class Mob extends LivingEntity { @@ -31,10 +31,10 @@ index f7d588198876082c456adfe8aba8e3150620e2d2..e569ca15ded9dc4f85dd9d6431470be6 Iterator iterator = list.iterator(); diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java b/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java -index 7d4457da2fe82ebe91b99cf91ae5e70b491d34e7..f4c1b7ad19cb7c9c81ab9f277751024c21bcb573 100644 +index fdfa36d3e148e8638109acaf4a0ea8a577985b61..fb4cefdac067ea24764acf7a5d5d0f5b04c6147d 100644 --- a/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java +++ b/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java -@@ -41,7 +41,7 @@ public class HarvestFarmland extends Behavior { +@@ -40,7 +40,7 @@ public class HarvestFarmland extends Behavior { } protected boolean checkExtraStartConditions(ServerLevel world, Villager entity) { @@ -44,10 +44,10 @@ index 7d4457da2fe82ebe91b99cf91ae5e70b491d34e7..f4c1b7ad19cb7c9c81ab9f277751024c } else if (entity.getVillagerData().getProfession() != VillagerProfession.FARMER && !(world.purpurConfig.villagerClericsFarmWarts && entity.getVillagerData().getProfession() == VillagerProfession.CLERIC)) { // Purpur return false; diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/BreakDoorGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/BreakDoorGoal.java -index fe045f8e35fe2aac51032a67ce52b27a53a8eff0..56d2849276b322436544512521e3b4ea0c679bcc 100644 +index 529435cf648d61f80a37f041cee3c6fc0b74ceb6..6c7195c93b5968845da35450e80022c70839487d 100644 --- a/src/main/java/net/minecraft/world/entity/ai/goal/BreakDoorGoal.java +++ b/src/main/java/net/minecraft/world/entity/ai/goal/BreakDoorGoal.java -@@ -33,7 +33,7 @@ public class BreakDoorGoal extends DoorInteractGoal { +@@ -32,7 +32,7 @@ public class BreakDoorGoal extends DoorInteractGoal { @Override public boolean canUse() { @@ -92,10 +92,10 @@ index 027ef44d46cb1dda19c5c239f6970c90285fb961..fd0ed33487305093bbdf6c9bf23313a5 } else if (this.nextStartTick > 0) { --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 -index 5fdea5a1e49f457a5094568854a50c3fb1059f81..cd462190ba900d4cf817967e52a83b68e31722a0 100644 +index 8a73267128c7e165651b97cd46f65f9cd373a1ea..a1e9a41f2100457f93f21dbcf7bb9ecd53103d9e 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java -@@ -1361,7 +1361,7 @@ public class Fox extends Animal { +@@ -1363,7 +1363,7 @@ public class Fox extends Animal { } protected void onReachedTarget() { @@ -105,10 +105,10 @@ index 5fdea5a1e49f457a5094568854a50c3fb1059f81..cd462190ba900d4cf817967e52a83b68 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 -index 48f8c2aaa27756d649a17dcbae78b1d579c3274f..2beb1421a2dc11c35f83ccff80e8f87e7bafe54a 100644 +index 8d44949c54f9cba0848b4f7b82c573325c134d9d..3e1f6392853f7770a3a3427444ecc9c5fe039a63 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java +++ b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java -@@ -616,7 +616,7 @@ public class Rabbit extends Animal { +@@ -618,7 +618,7 @@ public class Rabbit extends Animal { @Override public boolean canUse() { if (this.nextStartTick <= 0) { @@ -118,7 +118,7 @@ index 48f8c2aaa27756d649a17dcbae78b1d579c3274f..2beb1421a2dc11c35f83ccff80e8f87e } 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 d5f4166e3148d1a15ed1f04069ac0b4f5d09ebdc..bf9256fb8d50259fe099d6f4a2b945bee81b0d03 100644 +index 844de0207892b01259feb75d1b98397509e6d399..d87b5f8478bca172c233b84f4f4ac0b3b9a87692 100644 --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java @@ -133,7 +133,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @@ -131,23 +131,23 @@ index d5f4166e3148d1a15ed1f04069ac0b4f5d09ebdc..bf9256fb8d50259fe099d6f4a2b945be } 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 88532dce1148f3cf4a794894065a57582fe15924..7753e3f094574ec19b75013e2745a057ac840962 100644 +index 2c1381a2f0ba6d17f3d4a7c16e03fca263428cfb..b22f3839107e80d4c802475d7d56d52c267046c6 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -@@ -565,7 +565,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -562,7 +562,7 @@ public class EnderDragon extends Mob implements Enemy { BlockState iblockdata = this.level.getBlockState(blockposition); if (!iblockdata.isAir() && iblockdata.getMaterial() != Material.FIRE) { -- if (this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && !iblockdata.is((Tag) BlockTags.DRAGON_IMMUNE)) { -+ if ((this.level.purpurConfig.enderDragonBypassMobGriefing || this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) && !iblockdata.is((Tag) BlockTags.DRAGON_IMMUNE)) { // Purpur +- if (this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && !iblockdata.is(BlockTags.DRAGON_IMMUNE)) { ++ if ((this.level.purpurConfig.enderDragonBypassMobGriefing || this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) && !iblockdata.is(BlockTags.DRAGON_IMMUNE)) { // Purpur // CraftBukkit start - Add blocks to list rather than destroying them // flag1 = this.level.removeBlock(blockposition, false) || flag1; 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 -index d40a82fe6045a76c9b8d2294092f63e071f858ef..5271a1143073c06a1a961b05128b8e7fad9eb47b 100644 +index a8698975b368b27c0bb1cab4e0b83d69e773fc6b..87aaad12386b0ad79b1017100c83ca0482a9e304 100644 --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -@@ -391,7 +391,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -390,7 +390,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob i = this.getInvulnerableTicks() - 1; this.bossEvent.setProgress(1.0F - (float) i / 220.0F); if (i <= 0) { @@ -156,7 +156,7 @@ index d40a82fe6045a76c9b8d2294092f63e071f858ef..5271a1143073c06a1a961b05128b8e7f // CraftBukkit start // this.level.explode(this, this.getX(), this.getEyeY(), this.getZ(), 7.0F, false, explosion_effect); ExplosionPrimeEvent event = new ExplosionPrimeEvent(this.getBukkitEntity(), 7.0F, false); -@@ -487,7 +487,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -486,7 +486,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob if (this.destroyBlocksTick > 0) { --this.destroyBlocksTick; @@ -166,7 +166,7 @@ index d40a82fe6045a76c9b8d2294092f63e071f858ef..5271a1143073c06a1a961b05128b8e7f j = Mth.floor(this.getX()); int i1 = Mth.floor(this.getZ()); 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 956ec09ac0bc86608af1618be197e56e9055f82f..dee1c40e557c9103fd90e92ee891f266db8700c1 100644 +index 0d6bc9dddca21b19835af06f6fd5d4e91f247c6f..a042155bd2075d861343760a5c61ab53795d29af 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java @@ -349,7 +349,7 @@ public class Creeper extends Monster implements PowerableMob { @@ -179,10 +179,10 @@ index 956ec09ac0bc86608af1618be197e56e9055f82f..dee1c40e557c9103fd90e92ee891f266 // CraftBukkit start 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 6a4f1e85b2d19dee943cd63ccce05fda2a5fb1eb..8f8a5db7231c1ec69ac8b94b16447321fc89618a 100644 +index 086d98da914ca958f91ce1a1d7aea7af9e0e5a03..48fc2c978ffadbc3a3728adc60c35cc743d5b024 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -512,7 +512,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -511,7 +511,7 @@ public class EnderMan extends Monster implements NeutralMob { @Override public boolean canUse() { if (!enderman.level.purpurConfig.endermanAllowGriefing) return false; // Purpur @@ -191,7 +191,7 @@ index 6a4f1e85b2d19dee943cd63ccce05fda2a5fb1eb..8f8a5db7231c1ec69ac8b94b16447321 } @Override -@@ -560,7 +560,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -559,7 +559,7 @@ public class EnderMan extends Monster implements NeutralMob { @Override public boolean canUse() { if (!enderman.level.purpurConfig.endermanAllowGriefing) return false; // Purpur @@ -201,7 +201,7 @@ index 6a4f1e85b2d19dee943cd63ccce05fda2a5fb1eb..8f8a5db7231c1ec69ac8b94b16447321 @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 -index 9619f576f83924de5d25be2402137a10790f6f1e..f64f61e189baab82eb93891313106cc2d8edc8d3 100644 +index 1641d5083cad8b7cd62fc1168834ff99b5239c5a..281e8e6232c30cf5c20e9e2de4ac2ab4d0722ccf 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Evoker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Evoker.java @@ -339,7 +339,7 @@ public class Evoker extends SpellcasterIllager { @@ -227,10 +227,10 @@ index 0b916be0e0ed6fcf4263759da368732f4e16542a..99125fe401c561cbd65cadf74d749392 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(); 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 dd473dcd310e6af808bf3e90dc48bd19faf75fe1..25946b0171fd4c9bde91ecf0cb664861e71af4f8 100644 +index cfbbdea914eb55f5c772f68f6494ac90c1c4c0ea..d929193ed63b36deb32cc0807e75a589a0d8ad5c 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java +++ b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java -@@ -202,7 +202,7 @@ public class Silverfish extends Monster { +@@ -204,7 +204,7 @@ public class Silverfish extends Monster { continue; } // CraftBukkit end @@ -239,7 +239,7 @@ index dd473dcd310e6af808bf3e90dc48bd19faf75fe1..25946b0171fd4c9bde91ecf0cb664861 world.destroyBlock(blockposition1, true, this.silverfish); } else { world.setBlock(blockposition1, ((InfestedBlock) block).hostStateByInfested(world.getBlockState(blockposition1)), 3); -@@ -240,7 +240,7 @@ public class Silverfish extends Monster { +@@ -242,7 +242,7 @@ public class Silverfish extends Monster { } else { Random random = this.mob.getRandom(); @@ -328,10 +328,10 @@ index 8613008090a9d7cf5cd7c2a598f2c725b5b0cdc6..a66e9826b8283366cec5adb54f79efee // CraftBukkit start // this.level.createExplosion(this, this.locX(), this.locY(), this.locZ(), 1.0F, false, explosion_effect); diff --git a/src/main/java/net/minecraft/world/entity/raid/Raider.java b/src/main/java/net/minecraft/world/entity/raid/Raider.java -index 74a0866513ea04f635089badfd5cde132d2d1355..a66e456582743f11a458ff22ad8b0467a7e40813 100644 +index c5611465b1f9228a994c462c093cec94d7d08c2f..b7c672c0df699a4d0c78a2333eae3754b2a28bf7 100644 --- a/src/main/java/net/minecraft/world/entity/raid/Raider.java +++ b/src/main/java/net/minecraft/world/entity/raid/Raider.java -@@ -313,7 +313,7 @@ public abstract class Raider extends PatrollingMonster { +@@ -312,7 +312,7 @@ public abstract class Raider extends PatrollingMonster { @Override public boolean canUse() { @@ -354,10 +354,10 @@ index b4fd9af8805f451c87a91f319c15fa132b91faf7..e9087a46e401bc99b73c2cf2731fdac3 } diff --git a/src/main/java/net/minecraft/world/level/block/FarmBlock.java b/src/main/java/net/minecraft/world/level/block/FarmBlock.java -index f55a32c7c4e260b41a36b9fc3be01edb50b4951a..4c80e2a10715ce4d4442ea4636808d1e10025494 100644 +index c61e8887e697806378686b3b1ffca2b154d1a074..732f9e1ebb99cb7201b972dbd4990abb5f327ebb 100644 --- a/src/main/java/net/minecraft/world/level/block/FarmBlock.java +++ b/src/main/java/net/minecraft/world/level/block/FarmBlock.java -@@ -99,7 +99,7 @@ public class FarmBlock extends Block { +@@ -98,7 +98,7 @@ public class FarmBlock extends Block { @Override public void fallOn(Level world, BlockState state, BlockPos pos, Entity entity, float fallDistance) { super.fallOn(world, state, pos, entity, fallDistance); // CraftBukkit - moved here as game rules / events shouldn't affect fall damage. @@ -380,10 +380,10 @@ index 5e22a1cd1a0902d63f091bbfb8ae518b12c66f09..8fad9dfd25794c4f202e2104e4ae32b0 } // CraftBukkit end diff --git a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java -index b942e7c85e6c8f9a7664d9e5bf93bcd79e0651f1..5b29f3fced5435e172dd69f6f4eb265e760b6454 100644 +index b1846a5c73f5be800ab1e4efe81e110e245b4726..08401d2908e41d1ce3968ab085c4c376da33181f 100644 --- a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java +++ b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java -@@ -205,7 +205,7 @@ public class TurtleEggBlock extends Block { +@@ -204,7 +204,7 @@ public class TurtleEggBlock extends Block { return false; } if (entity instanceof LivingEntity && !(entity instanceof Player)) { diff --git a/patches/server/0134-Add-EntityTeleportHinderedEvent.patch b/patches/server/0134-Add-EntityTeleportHinderedEvent.patch index 6f33fb3ae..a98e248d2 100644 --- a/patches/server/0134-Add-EntityTeleportHinderedEvent.patch +++ b/patches/server/0134-Add-EntityTeleportHinderedEvent.patch @@ -59,10 +59,10 @@ index 82c132bc90381aab6a29d50319ff40e7383eb7f2..13a367d2b5f245f4dd92df03288dc40b EntityPortalEnterEvent event = new EntityPortalEnterEvent(entity.getBukkitEntity(), new org.bukkit.Location(world.getWorld(), pos.getX(), pos.getY(), pos.getZ())); world.getCraftServer().getPluginManager().callEvent(event); diff --git a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java -index 500a4013ce525c0474fe3991457d4c2a50ceb7ed..74de26d72e705041318beee0ebef59d61fb5278e 100644 +index a952f19530983ca9a72969ad25f9565a2a03688a..bb6f8db2f624fa5861fe860af7974c84104c2380 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java -@@ -177,6 +177,14 @@ public class TheEndGatewayBlockEntity extends TheEndPortalBlockEntity { +@@ -178,6 +178,14 @@ public class TheEndGatewayBlockEntity extends TheEndPortalBlockEntity { public static void teleportEntity(Level world, BlockPos pos, BlockState state, Entity entity, TheEndGatewayBlockEntity blockEntity) { if (world instanceof ServerLevel && !blockEntity.isCoolingDown()) { if (!entity.canChangeDimensions()) return; // Purpur @@ -78,7 +78,7 @@ index 500a4013ce525c0474fe3991457d4c2a50ceb7ed..74de26d72e705041318beee0ebef59d6 blockEntity.teleportCooldown = 100; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 728eba385fe5c658bc61114029192295ec7ebf05..e875bc08aaecc41db09ca0ffa00ff0f1ba40d350 100644 +index 318456621faf484dbad479b2873ae647e0c0f037..83c8889137e566322ec4337b0e6d8b940cc2edbe 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -564,6 +564,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { @@ -93,7 +93,7 @@ index 728eba385fe5c658bc61114029192295ec7ebf05..e875bc08aaecc41db09ca0ffa00ff0f1 } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index e9ace0dd9aef27e28766baf6847d82eeafb04bbe..9ff46a5aaecbf66edb8dc76924d4b3427d9bfb8f 100644 +index 43a764402662169b0b099b795e30169e8d7950d4..20b42ea8b055ad37417ca73dbd616e1ace761c45 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -1060,6 +1060,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0135-Farmland-trampling-changes.patch b/patches/server/0135-Farmland-trampling-changes.patch index b16aacda5..edbbad790 100644 --- a/patches/server/0135-Farmland-trampling-changes.patch +++ b/patches/server/0135-Farmland-trampling-changes.patch @@ -12,10 +12,10 @@ necessary to trample in the first place. Feather Falling 1 requires you to fall over 3+ blocks to trample. FF 2 requires 4+, etc. diff --git a/src/main/java/net/minecraft/world/level/block/FarmBlock.java b/src/main/java/net/minecraft/world/level/block/FarmBlock.java -index 4c80e2a10715ce4d4442ea4636808d1e10025494..a750d9cfbb7ba9057004924cac2b5a814501e67e 100644 +index 732f9e1ebb99cb7201b972dbd4990abb5f327ebb..29a538964d31527c9d10e25716e99ac22775119d 100644 --- a/src/main/java/net/minecraft/world/level/block/FarmBlock.java +++ b/src/main/java/net/minecraft/world/level/block/FarmBlock.java -@@ -114,12 +114,20 @@ public class FarmBlock extends Block { +@@ -113,12 +113,20 @@ public class FarmBlock extends Block { } // Purpur start @@ -37,7 +37,7 @@ index 4c80e2a10715ce4d4442ea4636808d1e10025494..a750d9cfbb7ba9057004924cac2b5a81 if (CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.DIRT.defaultBlockState()).isCancelled()) { return; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index dc2d2fcd6ce44228833ffbb964d7378bf3185742..d093c9526e56166ebdda515def2676a34623939c 100644 +index d0c983eacaff5d9314d767a8d58b5603fa336a50..ee15bf8d8325977d6333e0d83ac2b16f4c78969e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -444,10 +444,16 @@ public class PurpurWorldConfig { diff --git a/patches/server/0136-Movement-options-for-armor-stands.patch b/patches/server/0136-Movement-options-for-armor-stands.patch index 5bebbb488..dbe6b99be 100644 --- a/patches/server/0136-Movement-options-for-armor-stands.patch +++ b/patches/server/0136-Movement-options-for-armor-stands.patch @@ -17,10 +17,10 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 13f5699077a37670abf916a7a34554f898e28aa8..f46bfd8c8c5d05610d96174b2817c1a668aa0321 100644 +index 5ee3efa484c493d911a9f46ead4cf3a0fa4a8602..8d11ea349d9cb755af090ba9c86139450e30053d 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -1622,7 +1622,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i +@@ -1635,7 +1635,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i return this.isInWater() || flag; } diff --git a/patches/server/0137-Fix-stuck-in-portals.patch b/patches/server/0137-Fix-stuck-in-portals.patch index ff46baa1d..bcc31dc72 100644 --- a/patches/server/0137-Fix-stuck-in-portals.patch +++ b/patches/server/0137-Fix-stuck-in-portals.patch @@ -5,10 +5,10 @@ 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 -index 951e45f7b17f6f903c99634177395464a1889c0f..d31ae3a1df1a457d7ae55bc82e9c870c3e093e42 100644 +index c5505098c6b75008736617f8d264a3e17516edf5..3247fb348dbe59901d20dc2a99bb542d62563f05 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1171,6 +1171,7 @@ public class ServerPlayer extends Player { +@@ -1169,6 +1169,7 @@ public class ServerPlayer extends Player { playerlist.sendPlayerPermissionLevel(this); worldserver1.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION); this.unsetRemoved(); @@ -17,10 +17,10 @@ index 951e45f7b17f6f903c99634177395464a1889c0f..d31ae3a1df1a457d7ae55bc82e9c870c // CraftBukkit end this.setLevel(worldserver); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index f46bfd8c8c5d05610d96174b2817c1a668aa0321..22263b4ebc98011141afea62fdd75b305255a9c7 100644 +index 8d11ea349d9cb755af090ba9c86139450e30053d..2b873a4677b3323eb99e42273dc87be875f58b6f 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -2761,12 +2761,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i +@@ -2795,12 +2795,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i return Vec3.directionFromRotation(this.getRotationVector()); } diff --git a/patches/server/0138-Toggle-for-water-sensitive-mob-damage.patch b/patches/server/0138-Toggle-for-water-sensitive-mob-damage.patch index 6e09617b6..addef6faa 100644 --- a/patches/server/0138-Toggle-for-water-sensitive-mob-damage.patch +++ b/patches/server/0138-Toggle-for-water-sensitive-mob-damage.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Toggle for water sensitive mob damage diff --git a/src/main/java/net/minecraft/world/entity/GlowSquid.java b/src/main/java/net/minecraft/world/entity/GlowSquid.java -index 60737807fd2861db6c4ffb215e23f724407c069a..32211dfd76c03d1eb59929b93eb69cc6adde81ac 100644 +index ad93a0516391761f6275c2c04cc63f7f20101ba4..e98176b7969589897ee784bfb83f6c3f40cecd68 100644 --- a/src/main/java/net/minecraft/world/entity/GlowSquid.java +++ b/src/main/java/net/minecraft/world/entity/GlowSquid.java @@ -48,6 +48,11 @@ public class GlowSquid extends Squid { @@ -21,10 +21,10 @@ index 60737807fd2861db6c4ffb215e23f724407c069a..32211dfd76c03d1eb59929b93eb69cc6 @Override diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -index 1fbe37705556e62752be4719994e1cde96f3434d..f6b289cea5962ef56e5c9daa1122989bbabde00e 100644 +index 70b8698ef3863c957ac4639f113f235705da4667..d4dde82e28200df974b5a084f2d3d7780d8da1bf 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -@@ -103,6 +103,11 @@ public class Bat extends AmbientCreature { +@@ -102,6 +102,11 @@ public class Bat extends AmbientCreature { this.getAttribute(Attributes.ARMOR_TOUGHNESS).setBaseValue(this.level.purpurConfig.batArmorToughness); this.getAttribute(Attributes.ATTACK_KNOCKBACK).setBaseValue(this.level.purpurConfig.batAttackKnockback); } @@ -37,10 +37,10 @@ index 1fbe37705556e62752be4719994e1cde96f3434d..f6b289cea5962ef56e5c9daa1122989b @Override 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 a7dce3d3a0266bacd1883bfe8b47af79defcd95b..8501fd8a512182c7e58894576b54ce16408825a6 100644 +index c77c9cb3445a9ec807db6f74331e6ee620dd3ff5..ff9ec34962cdcd018a56bd39310b345d0adaf5cd 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java -@@ -177,7 +177,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -175,7 +175,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { // Paper end this.lookControl = new Bee.BeeLookControl(this); this.setPathfindingMalus(BlockPathTypes.DANGER_FIRE, -1.0F); @@ -49,7 +49,7 @@ index a7dce3d3a0266bacd1883bfe8b47af79defcd95b..8501fd8a512182c7e58894576b54ce16 this.setPathfindingMalus(BlockPathTypes.WATER_BORDER, 16.0F); this.setPathfindingMalus(BlockPathTypes.COCOA, -1.0F); this.setPathfindingMalus(BlockPathTypes.FENCE, -1.0F); -@@ -225,6 +225,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -223,6 +223,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { public int getPurpurBreedTime() { return this.level.purpurConfig.beeBreedingTicks; } @@ -62,10 +62,10 @@ index a7dce3d3a0266bacd1883bfe8b47af79defcd95b..8501fd8a512182c7e58894576b54ce16 @Override 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 0cddd8e8ccd7d7d5c38802116f9aaadb927224c1..66e054e71e0d3cd936c77b212567462e5c6268f2 100644 +index b4e482a28b1c7f1f46f31faa6466fb54a7991835..44ce32655ce8dcf14b3c2c4d8772ad38b00d0be0 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cat.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java -@@ -155,6 +155,11 @@ public class Cat extends TamableAnimal { +@@ -157,6 +157,11 @@ public class Cat extends TamableAnimal { public int getPurpurBreedTime() { return this.level.purpurConfig.catBreedingTicks; } @@ -78,7 +78,7 @@ index 0cddd8e8ccd7d7d5c38802116f9aaadb927224c1..66e054e71e0d3cd936c77b212567462e public ResourceLocation getResourceLocation() { 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 1c05400d8638ca14060de1ce26f7cb151487f818..e00f65973622b476e27ae7de5fa8dc8c42ef4af7 100644 +index 002a66c13074a887b6525085ca57227ff858bac7..d7ddb71ae59ab0a0e10717e5c678ef5e5476aba4 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Chicken.java +++ b/src/main/java/net/minecraft/world/entity/animal/Chicken.java @@ -80,6 +80,11 @@ public class Chicken extends Animal { @@ -126,10 +126,10 @@ index b063a74327e51b3cd27427426b92ef687c59c94b..00eec3f51e62858e7b85b3340e76bf66 @Override 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 9ad944839ec143375414fc3e054a2f8cc16814cd..3873fe82ec05f84efadd28ee9f48831b95405de2 100644 +index 4970823d6bed593a646b3b074fcaf53fd4afadb2..3cc3539f0664eeb048290f4d9b229a5d674fff3c 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java -@@ -164,6 +164,11 @@ public class Dolphin extends WaterAnimal { +@@ -162,6 +162,11 @@ public class Dolphin extends WaterAnimal { public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.dolphinMaxHealth); } @@ -142,10 +142,10 @@ index 9ad944839ec143375414fc3e054a2f8cc16814cd..3873fe82ec05f84efadd28ee9f48831b @Nullable 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 cd462190ba900d4cf817967e52a83b68e31722a0..8cdae4fb31b517015e6b154a68b2c37fe76fa127 100644 +index a1e9a41f2100457f93f21dbcf7bb9ecd53103d9e..d0e9f326e755f1e9e8a9f96f9effba5f80faab1e 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java -@@ -187,6 +187,11 @@ public class Fox extends Animal { +@@ -188,6 +188,11 @@ public class Fox extends Animal { public int getPurpurBreedTime() { return this.level.purpurConfig.foxBreedingTicks; } @@ -158,7 +158,7 @@ index cd462190ba900d4cf817967e52a83b68e31722a0..8cdae4fb31b517015e6b154a68b2c37f @Override 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 4c9ef9c044fbc427ad1ffb2b0f3b1ceda379ae00..13cdc3a97c7707c9cb41e3da6395b0022fd661aa 100644 +index fe7d88d81d70d46acf031f82495d0503f5b6b5d8..a33b49248a76c84983e98a84efa8a0e1ef6b53d6 100644 --- a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java @@ -90,6 +90,11 @@ public class IronGolem extends AbstractGolem implements NeutralMob { @@ -174,10 +174,10 @@ index 4c9ef9c044fbc427ad1ffb2b0f3b1ceda379ae00..13cdc3a97c7707c9cb41e3da6395b002 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index ecc5a0c2331609954411c8239392ede20649ec2f..4cfba039e940d8354a04a5ba761a5c0e10e695a3 100644 +index d7c68775fc39222be66bc82e0e7a1b0ae3238f7a..047404f4e38b9d796ceecb4e07740942eb137ae0 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -@@ -90,6 +90,11 @@ public class MushroomCow extends Cow implements Shearable { +@@ -89,6 +89,11 @@ public class MushroomCow extends Cow implements Shearable { public int getPurpurBreedTime() { return this.level.purpurConfig.mooshroomBreedingTicks; } @@ -190,10 +190,10 @@ index ecc5a0c2331609954411c8239392ede20649ec2f..4cfba039e940d8354a04a5ba761a5c0e @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java -index d07b0a4a8cf532dd8066e111fab1a64d4b9fd739..23a7b7c259f00ca44616af2e97a360a63cb55120 100644 +index 5aaeec3df43820bbaa839b9bfd9a756db7377cc2..5442baf10ca180b104bf1fd9cbcc12bb7a6146fc 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java -@@ -94,6 +94,11 @@ public class Ocelot extends Animal { +@@ -93,6 +93,11 @@ public class Ocelot extends Animal { public int getPurpurBreedTime() { return this.level.purpurConfig.ocelotBreedingTicks; } @@ -206,7 +206,7 @@ index d07b0a4a8cf532dd8066e111fab1a64d4b9fd739..23a7b7c259f00ca44616af2e97a360a6 public boolean isTrusting() { diff --git a/src/main/java/net/minecraft/world/entity/animal/Panda.java b/src/main/java/net/minecraft/world/entity/animal/Panda.java -index 67fa41c69756f234778127dd5a2ff159122da8d5..44302e7f86c45fb10dd9770e214e66512328d821 100644 +index 83fdc33da473c8ddf69bb20125bf38f6801f8fce..538d52c49ec35653ace723e25adf40217c7ed775 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Panda.java +++ b/src/main/java/net/minecraft/world/entity/animal/Panda.java @@ -142,6 +142,11 @@ public class Panda extends Animal { @@ -222,10 +222,10 @@ index 67fa41c69756f234778127dd5a2ff159122da8d5..44302e7f86c45fb10dd9770e214e6651 @Override 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 ac36bd31cc81b48e14f0bb4fc683726b669673be..fcf1b1168b29622ab2b1dc87a947cb66ef8bedfc 100644 +index 1539668c100352f7e8980f3b9db02b6fb979299b..c35644499f4501fb9d1f2ed3551949a38f3464ca 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -@@ -196,6 +196,11 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { +@@ -194,6 +194,11 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { public int getPurpurBreedTime() { return 6000; } @@ -238,7 +238,7 @@ index ac36bd31cc81b48e14f0bb4fc683726b669673be..fcf1b1168b29622ab2b1dc87a947cb66 @Nullable 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 3b4ad2199f40fbf902948545908247c805a3f1fa..479570e9f98404ac01ef08ce81ef200340cea602 100644 +index 93f670fe1512ec18272c2e4d71735bcbdbc87eda..a24dffe25615c9c9a4b641b291ce735e3f1dd6b7 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Pig.java +++ b/src/main/java/net/minecraft/world/entity/animal/Pig.java @@ -89,6 +89,11 @@ public class Pig extends Animal implements ItemSteerable, Saddleable { @@ -254,10 +254,10 @@ index 3b4ad2199f40fbf902948545908247c805a3f1fa..479570e9f98404ac01ef08ce81ef2003 @Override 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 de109bea3e132e08743f0a26f18262ee9a4982bd..753642045e2594d67887a766a8b6c477767a6edb 100644 +index 0f4a0e50e701c3fb75536e0b6d7821046e7f8f66..3fe05be69cada8df7553ee0fb9828e5ec593f54f 100644 --- a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java +++ b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java -@@ -125,6 +125,11 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -123,6 +123,11 @@ public class PolarBear extends Animal implements NeutralMob { public int getPurpurBreedTime() { return this.level.purpurConfig.polarBearBreedingTicks; } @@ -270,7 +270,7 @@ index de109bea3e132e08743f0a26f18262ee9a4982bd..753642045e2594d67887a766a8b6c477 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/Pufferfish.java b/src/main/java/net/minecraft/world/entity/animal/Pufferfish.java -index e42a7552d17f883b7116a180e408880c5fdb29d0..413f2491aad79409f4ac0759f7b649f1367376a5 100644 +index 988093b46a4c386f8d47a4c530b8e9f6f49efd0d..2a9af6af653dc62c99baff01ebea8ad64ff62fe0 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Pufferfish.java +++ b/src/main/java/net/minecraft/world/entity/animal/Pufferfish.java @@ -65,6 +65,11 @@ public class Pufferfish extends AbstractFish { @@ -286,10 +286,10 @@ index e42a7552d17f883b7116a180e408880c5fdb29d0..413f2491aad79409f4ac0759f7b649f1 @Override 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 2beb1421a2dc11c35f83ccff80e8f87e7bafe54a..b3c258b2e46433645b706b5a43012094f584abe0 100644 +index 3e1f6392853f7770a3a3427444ecc9c5fe039a63..dba2e1d677d7ac26517736cfbe2ee9d742fa4482 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java +++ b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java -@@ -145,6 +145,11 @@ public class Rabbit extends Animal { +@@ -146,6 +146,11 @@ public class Rabbit extends Animal { public int getPurpurBreedTime() { return this.level.purpurConfig.rabbitBreedingTicks; } @@ -334,7 +334,7 @@ index 86f398fc79dcc5dd24a61483d292e228dd6ab83b..4fa8e4a298a98b2a41ef7572d21ed50a @Override 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 bf9256fb8d50259fe099d6f4a2b945bee81b0d03..5695cdb6a621d24a3795220a66ea94dfa1dbba52 100644 +index d87b5f8478bca172c233b84f4f4ac0b3b9a87692..734b1314f148e0f92559be1dc1970613b313975f 100644 --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java @@ -116,7 +116,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @@ -347,10 +347,10 @@ index bf9256fb8d50259fe099d6f4a2b945bee81b0d03..5695cdb6a621d24a3795220a66ea94df @Override 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 8381937f208a30ca492a69470cf89b1b2621657f..49c043efc3f88ea9c5339e5011de80d2d42906c5 100644 +index 4850960c7c4f38c7d81b8945f8c87504d5ccd0d0..7a8f8be052dc3ee6dc56dd39017e11488af0a8ff 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java -@@ -96,6 +96,11 @@ public class Squid extends WaterAnimal { +@@ -95,6 +95,11 @@ public class Squid extends WaterAnimal { public boolean isInWater() { return this.wasTouchingWater || canFly(); } @@ -363,10 +363,10 @@ index 8381937f208a30ca492a69470cf89b1b2621657f..49c043efc3f88ea9c5339e5011de80d2 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java -index 9979a1c75ad6d420575b80413a7b49c51c5ae5c1..5b8a6b2705c6f317e4e48e7a9183b140489c355a 100644 +index f570600ca77b1b48e879198095ea54e692f3d243..206729081b8316ac76a808ec509a7aee4d6831f7 100644 --- a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java +++ b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java -@@ -70,6 +70,11 @@ public class TropicalFish extends AbstractSchoolingFish { +@@ -69,6 +69,11 @@ public class TropicalFish extends AbstractSchoolingFish { public void initAttributes() { this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.tropicalFishMaxHealth); } @@ -379,10 +379,10 @@ index 9979a1c75ad6d420575b80413a7b49c51c5ae5c1..5b8a6b2705c6f317e4e48e7a9183b140 public static String getPredefinedName(int variant) { diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -index 69cdf5540c654d730f4fc45e418c4c2ae532d2bc..e8e317c822a73b98545f3cf6e36aa284937e8c5b 100644 +index e3bf2c2bc16bc03c17d90f2ce1620c6b895e9bf7..3c38345b32d106a169d1e6abcae54f282d08fe89 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -@@ -111,6 +111,11 @@ public class Turtle extends Animal { +@@ -109,6 +109,11 @@ public class Turtle extends Animal { public int getPurpurBreedTime() { return this.level.purpurConfig.turtleBreedingTicks; } @@ -395,10 +395,10 @@ index 69cdf5540c654d730f4fc45e418c4c2ae532d2bc..e8e317c822a73b98545f3cf6e36aa284 public void setHomePos(BlockPos pos) { 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 0ded0de33fb53d827f2cdbfa5472c3469ee5a329..8c4ef7de3dfa2888ea175342a8df308a0a1fa66d 100644 +index b9567d4d6c03124d4eaa3194c97a170277c64bbe..8ca97562ef182a461b4dccdd2eb68dc919fc3634 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -@@ -204,6 +204,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -207,6 +207,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { setCollarColor(level.purpurConfig.wolfDefaultCollarColor); super.tame(player); } @@ -411,10 +411,10 @@ index 0ded0de33fb53d827f2cdbfa5472c3469ee5a329..8c4ef7de3dfa2888ea175342a8df308a @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index ea1fba058b28631a85dd5ec6153620d67c4ca5f2..dc84d044aa7533d31c48ed80e49c44951320cb5e 100644 +index a554d836635826bbe3fc562675ae982f33b409d1..b7e2ed08864f5bde346faebf9498254dc9794ce6 100644 --- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -@@ -127,6 +127,11 @@ public class Axolotl extends Animal implements LerpingModel, Bucketable { +@@ -129,6 +129,11 @@ public class Axolotl extends Animal implements LerpingModel, Bucketable { public int getPurpurBreedTime() { return this.level.purpurConfig.axolotlBreedingTicks; } @@ -427,10 +427,10 @@ index ea1fba058b28631a85dd5ec6153620d67c4ca5f2..dc84d044aa7533d31c48ed80e49c4495 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index ca545e7337ff58654f136d1edd8588bf92ca4977..dbfb6aa819d7bb86c60268daf9cf0b5a5200c5b1 100644 +index a697a094679c61e357177bc22e628c347b39a4d9..02146c9b5d64ed84869f946638f639d3cd176e5e 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -@@ -99,6 +99,11 @@ public class Goat extends Animal { +@@ -94,6 +94,11 @@ public class Goat extends Animal { public int getPurpurBreedTime() { return this.level.purpurConfig.goatBreedingTicks; } @@ -475,10 +475,10 @@ index 2c5cb1b759a0b6e0233345da5a968288ec338837..16755249c4700fa59f704b7c88e3490d @Override 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 fe6ce743b51c1ff74e8a1233cf0217c048b8577c..a5463330e6b20dcbf8a82bfb0821412f7c409b1d 100644 +index 5553cffdbaf308c543d0afed467acd3e6a0f8956..f90f890c8a537be1912e9f131d1866cffcb580e1 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -@@ -137,6 +137,11 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { +@@ -136,6 +136,11 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { public int getPurpurBreedTime() { return this.level.purpurConfig.llamaBreedingTicks; } @@ -555,10 +555,10 @@ index b6d9ba8dd5694952ca2eba54726ac5e587175250..88da7a365c28e2d097d0a7bff30ea1ac public static AttributeSupplier.Builder createAttributes() { 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 ee9cdd91a969e94b36ddb4cf06b15118d5d7204b..613a847d939349d0b5db34f058865a16d772fadc 100644 +index b22f3839107e80d4c802475d7d56d52c267046c6..e288eb271a40c7da9971c59131188eedd70d67c5 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -@@ -164,6 +164,11 @@ public class EnderDragon extends Mob implements Enemy { +@@ -162,6 +162,11 @@ public class EnderDragon extends Mob implements Enemy { public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.enderDragonMaxHealth); } @@ -571,10 +571,10 @@ index ee9cdd91a969e94b36ddb4cf06b15118d5d7204b..613a847d939349d0b5db34f058865a16 public static AttributeSupplier.Builder createAttributes() { 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 99b901f1ee202213dae3ab1930342920bbfe3d7a..93a431247b28bcb8cc974f2dfafe1daba440bc48 100644 +index 87aaad12386b0ad79b1017100c83ca0482a9e304..1aadac665d7389431d819f72bb05af82a4d08b8c 100644 --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -@@ -223,6 +223,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -222,6 +222,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.witherMaxHealth); } @@ -625,7 +625,7 @@ index b9ee6fdaad09c92fdeea2e5be606818278a77c21..5347ba12f2a07601c9f044081e5e6ce6 @Override 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 dee1c40e557c9103fd90e92ee891f266db8700c1..7c683693a806142c098dd31e6bc88a0b0a33ec66 100644 +index a042155bd2075d861343760a5c61ab53795d29af..d3696a9182613d17188c5c01a554b26522a6e7e8 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java @@ -151,6 +151,11 @@ public class Creeper extends Monster implements PowerableMob { @@ -641,10 +641,10 @@ index dee1c40e557c9103fd90e92ee891f266db8700c1..7c683693a806142c098dd31e6bc88a0b @Override 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 d49e0f8e7842e4f5fb9f97fc8ea760910a1edd52..a2f71b1ba0df62910df528103e8695a2762fe1df 100644 +index 3dd6dd92f5f8334b43f50447ac259b2d06f9af95..8a68469769cfe8ac596b3f2c990e0375d7d1dcaf 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java +++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java -@@ -109,6 +109,11 @@ public class Drowned extends Zombie implements RangedAttackMob { +@@ -107,6 +107,11 @@ public class Drowned extends Zombie implements RangedAttackMob { public boolean jockeyTryExistingChickens() { return level.purpurConfig.drownedJockeyTryExistingChickens; } @@ -673,10 +673,10 @@ index 25fab7497a80a8fa65bd9cd9bdb0cd498f240bd1..2800594fea055d75268531d8ad3fef99 public static AttributeSupplier.Builder createAttributes() { 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 8f8a5db7231c1ec69ac8b94b16447321fc89618a..eb0c73cb96e94079ac010c8ae4999206ad988cdf 100644 +index 48fc2c978ffadbc3a3728adc60c35cc743d5b024..2c637e8e93c553d51b2467de64b9d0b9bf9b8381 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -85,7 +85,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -84,7 +84,7 @@ public class EnderMan extends Monster implements NeutralMob { public EnderMan(EntityType type, Level world) { super(type, world); this.maxUpStep = 1.0F; @@ -685,7 +685,7 @@ index 8f8a5db7231c1ec69ac8b94b16447321fc89618a..eb0c73cb96e94079ac010c8ae4999206 } // Purpur start -@@ -298,7 +298,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -297,7 +297,7 @@ public class EnderMan extends Monster implements NeutralMob { @Override public boolean isSensitiveToWater() { @@ -695,10 +695,10 @@ index 8f8a5db7231c1ec69ac8b94b16447321fc89618a..eb0c73cb96e94079ac010c8ae4999206 @Override 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 6d47413b56b9d8b195b6087e39048b6ad5ce477f..35108f25aac196b2c8ba2cf91a6744831e93a0b3 100644 +index 2d43bdae159f1345f1f50bb9b0c5aebffa33ed96..31cfaa059dc8df86027950e5db651560fcd51d32 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Endermite.java +++ b/src/main/java/net/minecraft/world/entity/monster/Endermite.java -@@ -56,6 +56,11 @@ public class Endermite extends Monster { +@@ -57,6 +57,11 @@ public class Endermite extends Monster { public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.endermiteMaxHealth); } @@ -711,7 +711,7 @@ index 6d47413b56b9d8b195b6087e39048b6ad5ce477f..35108f25aac196b2c8ba2cf91a674483 @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 -index f64f61e189baab82eb93891313106cc2d8edc8d3..6c3af9c64f9622150928da09ce8318c21d450b74 100644 +index 281e8e6232c30cf5c20e9e2de4ac2ab4d0722ccf..912c594c2a5df21663b26da81cc3d78b37055a6a 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Evoker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Evoker.java @@ -68,6 +68,11 @@ public class Evoker extends SpellcasterIllager { @@ -807,7 +807,7 @@ index 171e2fef10ac75dd4585a82057edb4452a6f0d22..5b6a61fb2b44ea4dec4767958a2abe57 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java b/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java -index d4ce48a99fad5e9a26f8e057d91c712b8d8623b0..d5039d0a5e8a35cb7ce43792c909b21d1b0986f2 100644 +index a9c8dd788affd122d98bc9a2eef068c5fb9a58ba..b7b4e5173e0f6da888746f1d1679cbde43905bf0 100644 --- a/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java +++ b/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java @@ -67,6 +67,11 @@ public class MagmaCube extends Slime { @@ -823,7 +823,7 @@ index d4ce48a99fad5e9a26f8e057d91c712b8d8623b0..d5039d0a5e8a35cb7ce43792c909b21d public static AttributeSupplier.Builder createAttributes() { 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 5d9e6945ebdda73a77f048dfb91bfeb561e0eb5f..3122f7b826605f171bc1c88de89b358bd2e7118c 100644 +index 2be9ab670e93067fe23745cafa0655a1dfa2bc0f..e7e4d87fb8a5276fd617afc4e0b925100abf3f76 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java @@ -151,6 +151,11 @@ public class Phantom extends FlyingMob implements Enemy { @@ -887,10 +887,10 @@ index 545ca8ada7ef9cff3619d2a556ddbd01742703f1..ae22748c9cefd000986d50e12fa9cb2a @Override 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 25946b0171fd4c9bde91ecf0cb664861e71af4f8..e1407131ceab66bee552e1e2bc8f4ccef668ef62 100644 +index d929193ed63b36deb32cc0807e75a589a0d8ad5c..e207d70a031131217874837198a30d04b9640409 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java +++ b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java -@@ -61,6 +61,11 @@ public class Silverfish extends Monster { +@@ -62,6 +62,11 @@ public class Silverfish extends Monster { public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.silverfishMaxHealth); } @@ -919,10 +919,10 @@ index e239bcc4d4afe48e9fc204ad38d8bc76833994f4..8ce46cc00a01a678270e906078097aa7 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Slime.java b/src/main/java/net/minecraft/world/entity/monster/Slime.java -index d7779ad6b6ce502468f104e35a715bf8fc013cff..f8e39e7b4c5ab3a864a516a8937992874ff2d10a 100644 +index b1894c88682201ed5fca5e98bedab73b4b08a065..9582332f8fb211b41110d0fcda97521c2035ebb3 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Slime.java +++ b/src/main/java/net/minecraft/world/entity/monster/Slime.java -@@ -137,6 +137,11 @@ public class Slime extends Mob implements Enemy { +@@ -135,6 +135,11 @@ public class Slime extends Mob implements Enemy { } return value; } @@ -967,10 +967,10 @@ index b54368f53d3cf87f35132f811f8a917999968c1e..4888502f99e0a9db246f9714a4d75348 public static boolean checkStraySpawnRules(EntityType type, ServerLevelAccessor world, MobSpawnType spawnReason, BlockPos pos, Random random) { 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 cfa355d99d5f8aaefe4cf0c10805ef7b51a0224a..a58800a7b06f662c7b3fc876ae78fb2880d3ddbc 100644 +index bec84c1dba34d61de9199b1b46cad49d46ee9731..5ff3373c9c73691d7f21c05b0f044c198b2bab2d 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Strider.java +++ b/src/main/java/net/minecraft/world/entity/monster/Strider.java -@@ -91,7 +91,7 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { +@@ -90,7 +90,7 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { super(type, world); this.steering = new ItemBasedSteering(this.entityData, Strider.DATA_BOOST_TIME, Strider.DATA_SADDLE_ID); this.blocksBuilding = true; @@ -979,7 +979,7 @@ index cfa355d99d5f8aaefe4cf0c10805ef7b51a0224a..a58800a7b06f662c7b3fc876ae78fb28 this.setPathfindingMalus(BlockPathTypes.LAVA, 0.0F); this.setPathfindingMalus(BlockPathTypes.DANGER_FIRE, 0.0F); this.setPathfindingMalus(BlockPathTypes.DAMAGE_FIRE, 0.0F); -@@ -413,7 +413,7 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { +@@ -412,7 +412,7 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { @Override public boolean isSensitiveToWater() { @@ -989,7 +989,7 @@ index cfa355d99d5f8aaefe4cf0c10805ef7b51a0224a..a58800a7b06f662c7b3fc876ae78fb28 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Vex.java b/src/main/java/net/minecraft/world/entity/monster/Vex.java -index b223b48215adcd57ea9656194df3b5673a82586b..441357d9a74126a145293193eb02f24e26db3561 100644 +index 1614109a5492d46c26552f2f5e3a510d82e31dc1..429c960ef287e71974be5567374e44a44be09c88 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Vex.java +++ b/src/main/java/net/minecraft/world/entity/monster/Vex.java @@ -105,6 +105,11 @@ public class Vex extends Monster { @@ -1021,7 +1021,7 @@ index acd4e282841708d7ef0145757899e355a6410a4a..729eb8a30b35ef5c70be30b3141b9da5 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Witch.java b/src/main/java/net/minecraft/world/entity/monster/Witch.java -index 33d6aba40c6523cb271946bac98c6e84593a2c6b..d6ad32e3622164a35bea1237ec62745588f7f031 100644 +index 0359db7ccca286df046066b4a2356a50b8240a56..801355c7c3a4acfb3c45b0d5bc3218e948f72e10 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Witch.java +++ b/src/main/java/net/minecraft/world/entity/monster/Witch.java @@ -79,6 +79,11 @@ public class Witch extends Raider implements RangedAttackMob { @@ -1069,7 +1069,7 @@ index a91ec2e385940b12bc41d9c09819c9081edc5c44..9928af5318c1cc4676c5cf215840ce0f @Override 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 b59894aaa9553bf78b98a6fce7fb624088389011..4b288fe8923bb4beefb88e8196bfb4d5d2b10b8b 100644 +index eaffa791ce73f6b2c2fa5b940909346e9f0fda0f..15bbf62f1dab73b501044c6ada0f6f3b09ab07df 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -136,6 +136,11 @@ public class Zombie extends Monster { @@ -1085,10 +1085,10 @@ index b59894aaa9553bf78b98a6fce7fb624088389011..4b288fe8923bb4beefb88e8196bfb4d5 @Override 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 cad1a9be238aa62b4eb0ec02d4155d15c0cc5378..92d527081abd35acc646f66a0714f2dc01706dfe 100644 +index b925e0ffbdc8f388a7b2162284e8356c3e969454..ba6875089c122baaf99f21cda5c65228c78e0fa1 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -@@ -115,6 +115,11 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { +@@ -119,6 +119,11 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { public boolean jockeyTryExistingChickens() { return level.purpurConfig.zombieVillagerJockeyTryExistingChickens; } @@ -1101,7 +1101,7 @@ index cad1a9be238aa62b4eb0ec02d4155d15c0cc5378..92d527081abd35acc646f66a0714f2dc @Override 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 ecf0b5def569f6c37d0a27ceb51e7158e57cbe6b..ae53d716c25c1cf328231384595049536a50d1bd 100644 +index 21610fa723b22894a4ff316ee34d8aabfb707526..918cd5c51849e3de4915016a76bbd4b66c3b8b42 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java @@ -94,6 +94,11 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { @@ -1165,10 +1165,10 @@ index ec532ba1ccb0dbe50b91ba698a4f30d5bc89ca82..e0be095bdff6a9316812715f26772ef4 public static AttributeSupplier.Builder createAttributes() { 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 72f067f1d88a77b9ad571bac84cecf10cc63c975..6fe8ebc19470425dd5e44b67b0c6b369a1e21365 100644 +index bbb8dde583b1a40c305bb110313e7121ad354dc3..c926a513490b91e83802ab1aea6db90b93acd206 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -186,6 +186,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -188,6 +188,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler public boolean canBeLeashed(Player player) { return level.purpurConfig.villagerCanBeLeashed && !this.isLeashed(); } @@ -1181,10 +1181,10 @@ index 72f067f1d88a77b9ad571bac84cecf10cc63c975..6fe8ebc19470425dd5e44b67b0c6b369 @Override 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 00a19fc46b4ffecfcfb591a17c7c3608f014d7c8..d99e97d5a7291df541a939c0f21297d8c3976138 100644 +index 8756e0d8d0077308f5fb74bf45fe093d0f043c99..6dd8856816bebb2766203589048cc68b3f5c8f5c 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -@@ -92,6 +92,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill +@@ -91,6 +91,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill public boolean canBeLeashed(Player player) { return level.purpurConfig.wanderingTraderCanBeLeashed && !this.isLeashed(); } diff --git a/patches/server/0139-Config-to-always-tame-in-Creative.patch b/patches/server/0139-Config-to-always-tame-in-Creative.patch index 5be5d40e6..fa5e101e1 100644 --- a/patches/server/0139-Config-to-always-tame-in-Creative.patch +++ b/patches/server/0139-Config-to-always-tame-in-Creative.patch @@ -20,10 +20,10 @@ index 5c64905e90ccca6e0b347241ddf9cc3f71058b8e..3bd7521b131b2b40f807bdc7ab95e64c 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 -index 66e054e71e0d3cd936c77b212567462e5c6268f2..5759ff40254ff7238e7b874822f743fbf0d33e81 100644 +index 44ce32655ce8dcf14b3c2c4d8772ad38b00d0be0..8d49f4c9d5d9a0f4dc4a1c1dcdcc7bfc678d8de3 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cat.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java -@@ -485,7 +485,7 @@ public class Cat extends TamableAnimal { +@@ -494,7 +494,7 @@ public class Cat extends TamableAnimal { } } else if (this.isFood(itemstack)) { this.usePlayerItem(player, hand, itemstack); @@ -33,10 +33,10 @@ index 66e054e71e0d3cd936c77b212567462e5c6268f2..5759ff40254ff7238e7b874822f743fb this.setOrderedToSit(true); 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 -index fcf1b1168b29622ab2b1dc87a947cb66ef8bedfc..ee52e83375521fa41369161356802c305deb605d 100644 +index c35644499f4501fb9d1f2ed3551949a38f3464ca..c266028b96dcdb4d6dbb161a5f16be0d38827a91 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -@@ -331,7 +331,7 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { +@@ -329,7 +329,7 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { } if (!this.level.isClientSide) { @@ -46,10 +46,10 @@ index fcf1b1168b29622ab2b1dc87a947cb66ef8bedfc..ee52e83375521fa41369161356802c30 this.level.broadcastEntityEvent(this, (byte) 7); } 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 -index 8c4ef7de3dfa2888ea175342a8df308a0a1fa66d..63d3f68326386532b027c077c35629c75508bfc4 100644 +index 8ca97562ef182a461b4dccdd2eb68dc919fc3634..3ee87e888b048dd3272a633b40b5987276b30155 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -@@ -524,7 +524,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -531,7 +531,7 @@ public class Wolf extends TamableAnimal implements NeutralMob { } // CraftBukkit - added event call and isCancelled check. diff --git a/patches/server/0141-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch b/patches/server/0141-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch index 9f5e11ec4..caf32db8a 100644 --- a/patches/server/0141-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch +++ b/patches/server/0141-Configs-for-if-Wither-Ender-Dragon-can-ride-vehicles.patch @@ -5,10 +5,10 @@ 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 -index 613a847d939349d0b5db34f058865a16d772fadc..c28c2a2a888ddd6c0e6e4feed952fe99bc2a0cfe 100644 +index e288eb271a40c7da9971c59131188eedd70d67c5..f8366a7bef18ab6dc201420ac4054be0b27f9f88 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -@@ -1119,6 +1119,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -1116,6 +1116,7 @@ public class EnderDragon extends Mob implements Enemy { @Override protected boolean canRide(Entity entity) { @@ -17,10 +17,10 @@ index 613a847d939349d0b5db34f058865a16d772fadc..c28c2a2a888ddd6c0e6e4feed952fe99 } 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 93a431247b28bcb8cc974f2dfafe1daba440bc48..d7d9500b0c10b5091910610651bcf85524b67a47 100644 +index 1aadac665d7389431d819f72bb05af82a4d08b8c..b947a9af4c3387aec9b7e62d5899fdae1ccfedbb 100644 --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -@@ -738,6 +738,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -737,6 +737,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @Override protected boolean canRide(Entity entity) { diff --git a/patches/server/0142-Dont-run-with-scissors.patch b/patches/server/0142-Dont-run-with-scissors.patch index 80b6e8122..8f0f20b04 100644 --- a/patches/server/0142-Dont-run-with-scissors.patch +++ b/patches/server/0142-Dont-run-with-scissors.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Dont run with scissors! diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 7aed16c2ab8cef0b7d0eef4b8b5e0845d45b79ab..5d95ff124cfccb3d95e149a5e7cc63bef03ca471 100644 +index d68de70beb0634004224fe082566f33484924b97..7837ee997457e0e6f9c8ef0d0635c04b0c19bf6a 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1592,6 +1592,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -1587,6 +1587,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser this.player.resetFallDistance(); } @@ -22,7 +22,7 @@ index 7aed16c2ab8cef0b7d0eef4b8b5e0845d45b79ab..5d95ff124cfccb3d95e149a5e7cc63be this.player.checkMovementStatistics(this.player.getX() - d3, this.player.getY() - d4, this.player.getZ() - d5); this.lastGoodX = this.player.getX(); this.lastGoodY = this.player.getY(); -@@ -1625,6 +1632,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -1620,6 +1627,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser } // Paper end - optimise out extra getCubes @@ -36,7 +36,7 @@ index 7aed16c2ab8cef0b7d0eef4b8b5e0845d45b79ab..5d95ff124cfccb3d95e149a5e7cc63be Iterable iterable = world.getCollisions(this.player, this.player.getBoundingBox().deflate(9.999999747378752E-6D)); VoxelShape voxelshape = Shapes.create(box.deflate(9.999999747378752E-6D)); diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSource.java b/src/main/java/net/minecraft/world/damagesource/DamageSource.java -index 32bf8264fecb8873f3ffa0e57a4bb48b5517fb77..0f56c60962b9c61c72d05edc7d9b10e93a119329 100644 +index 9125deb86b856bcb5e1cd779773522e2fa4cb5f9..c7dead8b33c987501c0b16ea905a5088cd4f27dd 100644 --- a/src/main/java/net/minecraft/world/damagesource/DamageSource.java +++ b/src/main/java/net/minecraft/world/damagesource/DamageSource.java @@ -46,6 +46,12 @@ public class DamageSource { diff --git a/patches/server/0143-One-Punch-Man.patch b/patches/server/0143-One-Punch-Man.patch index 7dc8c8eb5..79974b5ba 100644 --- a/patches/server/0143-One-Punch-Man.patch +++ b/patches/server/0143-One-Punch-Man.patch @@ -5,10 +5,10 @@ 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 -index f7c6633733460bdfe0a02255f9be5ac385ec915a..693fe29b9b086d8c8c333406479e2baab4d4de4b 100644 +index dace52b3cae2ce20c10080612bf6d6b09e82bea1..bb114e9c8fb06c6530f302f5db5ba90eb048ff05 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -2166,6 +2166,20 @@ public abstract class LivingEntity extends Entity { +@@ -2169,6 +2169,20 @@ public abstract class LivingEntity extends Entity { ((ServerPlayer) damagesource.getEntity()).awardStat(Stats.DAMAGE_DEALT_ABSORBED, Math.round(f2 * 10.0F)); } diff --git a/patches/server/0146-Config-to-ignore-nearby-mobs-when-sleeping.patch b/patches/server/0146-Config-to-ignore-nearby-mobs-when-sleeping.patch index 2a886fa05..e5cce1fe4 100644 --- a/patches/server/0146-Config-to-ignore-nearby-mobs-when-sleeping.patch +++ b/patches/server/0146-Config-to-ignore-nearby-mobs-when-sleeping.patch @@ -5,10 +5,10 @@ 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 -index d31ae3a1df1a457d7ae55bc82e9c870c3e093e42..a50d5342c5981a7ff5b4c56beea19da7e8a1b77c 100644 +index 3247fb348dbe59901d20dc2a99bb542d62563f05..bf7aebfdb5f1778c2ed4cd8bb84edd2de8251acf 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1321,7 +1321,7 @@ public class ServerPlayer extends Player { +@@ -1319,7 +1319,7 @@ public class ServerPlayer extends Player { return entitymonster.isPreventingPlayerRest(this); }); @@ -18,7 +18,7 @@ index d31ae3a1df1a457d7ae55bc82e9c870c3e093e42..a50d5342c5981a7ff5b4c56beea19da7 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e95fe1e812135d9adfd8cf6a23433528060e5123..d3c2f19aef25c543885388625a479b3a41da3033 100644 +index 093c3150e1fb88330f7c8a669440643f5931cdc0..9993677b92324bda36a01c673d1d47ce5b4f730d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -345,6 +345,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0147-Add-back-player-spawned-endermite-API.patch b/patches/server/0147-Add-back-player-spawned-endermite-API.patch index 77775ff5b..94b0903c2 100644 --- a/patches/server/0147-Add-back-player-spawned-endermite-API.patch +++ b/patches/server/0147-Add-back-player-spawned-endermite-API.patch @@ -5,10 +5,10 @@ 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 -index 35108f25aac196b2c8ba2cf91a6744831e93a0b3..3e0f287695fd3def8ed9967d921e141b7ff8bc47 100644 +index 31cfaa059dc8df86027950e5db651560fcd51d32..c644acd4402e41ec1eab919f35e378a8285b9b08 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Endermite.java +++ b/src/main/java/net/minecraft/world/entity/monster/Endermite.java -@@ -30,6 +30,7 @@ import net.minecraft.world.level.block.state.BlockState; +@@ -31,6 +31,7 @@ import net.minecraft.world.level.block.state.BlockState; public class Endermite extends Monster { private static final int MAX_LIFE = 2400; private int life; @@ -16,7 +16,7 @@ index 35108f25aac196b2c8ba2cf91a6744831e93a0b3..3e0f287695fd3def8ed9967d921e141b public Endermite(EntityType type, Level world) { super(type, world); -@@ -61,6 +62,14 @@ public class Endermite extends Monster { +@@ -62,6 +63,14 @@ public class Endermite extends Monster { public boolean isSensitiveToWater() { return this.level.purpurConfig.endermiteTakeDamageFromWater; } @@ -31,7 +31,7 @@ index 35108f25aac196b2c8ba2cf91a6744831e93a0b3..3e0f287695fd3def8ed9967d921e141b // Purpur end @Override -@@ -114,12 +123,14 @@ public class Endermite extends Monster { +@@ -116,12 +125,14 @@ public class Endermite extends Monster { public void readAdditionalSaveData(CompoundTag nbt) { super.readAdditionalSaveData(nbt); this.life = nbt.getInt("Lifetime"); diff --git a/patches/server/0148-Config-Enderman-aggressiveness-towards-Endermites.patch b/patches/server/0148-Config-Enderman-aggressiveness-towards-Endermites.patch index a27244fa7..697a1b5a8 100644 --- a/patches/server/0148-Config-Enderman-aggressiveness-towards-Endermites.patch +++ b/patches/server/0148-Config-Enderman-aggressiveness-towards-Endermites.patch @@ -5,10 +5,10 @@ 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 -index a02e04ed34de9d87066b202cf747f927b55cfb76..330d3d6dd1a959830479b2d1846378b0cd7f9151 100644 +index 2c637e8e93c553d51b2467de64b9d0b9bf9b8381..371cefe186dbb0643f7de4fabe40db9bdc9e1118 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -124,7 +124,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -123,7 +123,7 @@ public class EnderMan extends Monster implements NeutralMob { this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.targetSelector.addGoal(1, new EnderMan.EndermanLookForPlayerGoal(this, this::isAngryAt)); this.targetSelector.addGoal(2, new HurtByTargetGoal(this, new Class[0])); diff --git a/patches/server/0149-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch b/patches/server/0149-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch index a88dec31a..d9a7afe9b 100644 --- a/patches/server/0149-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch +++ b/patches/server/0149-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch @@ -7,10 +7,10 @@ Prevents Enderman from becoming aggresive towards players that are wearing a Dra 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 -index 330d3d6dd1a959830479b2d1846378b0cd7f9151..eb1f02840ae230f9195d72d0ece9553bf72bba3f 100644 +index 371cefe186dbb0643f7de4fabe40db9bdc9e1118..8713db4986d6db80c3422ead4f99203283e22e40 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -261,7 +261,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -260,7 +260,7 @@ public class EnderMan extends Monster implements NeutralMob { // Paper end ItemStack itemstack = (ItemStack) player.getInventory().armor.get(3); diff --git a/patches/server/0150-Tick-fluids-config.patch b/patches/server/0150-Tick-fluids-config.patch index 965191f04..d5aba4ec9 100644 --- a/patches/server/0150-Tick-fluids-config.patch +++ b/patches/server/0150-Tick-fluids-config.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Tick fluids config diff --git a/src/main/java/net/minecraft/world/level/block/LiquidBlock.java b/src/main/java/net/minecraft/world/level/block/LiquidBlock.java -index 11ebadaa2438281a54cffe025a49ee5046a71ba5..07c25a2518eb5ce0da6131ce5ceb10ac1f97a95d 100644 +index 8497adcba2570da8875c322e751fca2fdad057e5..992430e38a3ffb3c0243a17c75432141937fcee5 100644 --- a/src/main/java/net/minecraft/world/level/block/LiquidBlock.java +++ b/src/main/java/net/minecraft/world/level/block/LiquidBlock.java -@@ -107,7 +107,7 @@ public class LiquidBlock extends Block implements BucketPickup { +@@ -106,7 +106,7 @@ public class LiquidBlock extends Block implements BucketPickup { @Override public void onPlace(BlockState state, Level world, BlockPos pos, BlockState oldState, boolean notify) { @@ -17,7 +17,7 @@ index 11ebadaa2438281a54cffe025a49ee5046a71ba5..07c25a2518eb5ce0da6131ce5ceb10ac world.scheduleTick(pos, state.getFluidState().getType(), this.getFlowSpeed(world, pos)); // Paper } -@@ -131,7 +131,7 @@ public class LiquidBlock extends Block implements BucketPickup { +@@ -130,7 +130,7 @@ public class LiquidBlock extends Block implements BucketPickup { @Override public BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor world, BlockPos pos, BlockPos neighborPos) { @@ -26,7 +26,7 @@ index 11ebadaa2438281a54cffe025a49ee5046a71ba5..07c25a2518eb5ce0da6131ce5ceb10ac world.scheduleTick(pos, state.getFluidState().getType(), this.fluid.getTickDelay(world)); } -@@ -140,7 +140,7 @@ public class LiquidBlock extends Block implements BucketPickup { +@@ -139,7 +139,7 @@ public class LiquidBlock extends Block implements BucketPickup { @Override public void neighborChanged(BlockState state, Level world, BlockPos pos, Block block, BlockPos fromPos, boolean notify) { @@ -36,7 +36,7 @@ index 11ebadaa2438281a54cffe025a49ee5046a71ba5..07c25a2518eb5ce0da6131ce5ceb10ac } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1fb43400052a3206c752dd83e721790c858091ba..ce2aee67f46beb7dd184fc52e53b7f8824501f56 100644 +index 13ddf5fbec4c20af82be03f814004e99fcdb67d9..ad950cbf50332004b03f9a19ac2d5739d60e1672 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -123,6 +123,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0151-Config-to-disable-Llama-caravans.patch b/patches/server/0151-Config-to-disable-Llama-caravans.patch index fd9894fee..395d8f181 100644 --- a/patches/server/0151-Config-to-disable-Llama-caravans.patch +++ b/patches/server/0151-Config-to-disable-Llama-caravans.patch @@ -19,10 +19,10 @@ index 7b141c495095afcd9c8b04c059d692e829259e7a..ad30f2d678cfc4b0d693e84e6e152c63 List list = this.llama.level.getEntities(this.llama, this.llama.getBoundingBox().inflate(9.0D, 4.0D, 9.0D), (entity) -> { 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 -index a5463330e6b20dcbf8a82bfb0821412f7c409b1d..6fffb293e1ca06a9f07fe30928e4dd8fff1b0a15 100644 +index f90f890c8a537be1912e9f131d1866cffcb580e1..68f28835905c018428d848c1fc9ffe7dabcac0d3 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -@@ -541,7 +541,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { +@@ -540,7 +540,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { } public void joinCaravan(Llama llama) { diff --git a/patches/server/0154-Sneak-to-bulk-process-composter.patch b/patches/server/0154-Sneak-to-bulk-process-composter.patch index 750a80c06..89c268203 100644 --- a/patches/server/0154-Sneak-to-bulk-process-composter.patch +++ b/patches/server/0154-Sneak-to-bulk-process-composter.patch @@ -5,10 +5,10 @@ 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 -index cc5dbc86c8265540948e6b1445d84ecf0b7762aa..ab73f66976d3ea3fa561a4e2d8afcce8586c5b25 100644 +index 891199d02539fa46454cd0aa7c133637e5dc8235..14465d6368ee5866bc04efe7f9e2023f60f39202 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -@@ -582,7 +582,7 @@ public class ServerPlayerGameMode { +@@ -592,7 +592,7 @@ public class ServerPlayerGameMode { boolean flag1 = player.isSecondaryUseActive() && flag; ItemStack itemstack1 = stack.copy(); diff --git a/patches/server/0155-Config-for-skipping-night.patch b/patches/server/0155-Config-for-skipping-night.patch index bc50651ca..66fc77be7 100644 --- a/patches/server/0155-Config-for-skipping-night.patch +++ b/patches/server/0155-Config-for-skipping-night.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config for skipping night diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index f870288f2acc87183f272e32817bd5cf426d74d7..763c414511c5660e7071fb6863e6f96428de2798 100644 +index fef7565a9f64a8630e8bce20ea423f70b0ffa48e..be0e83831f9eea27a3a323c234165b3af4ac652a 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -608,7 +608,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -606,7 +606,7 @@ public class ServerLevel extends Level implements WorldGenLevel { int i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); long j; @@ -18,7 +18,7 @@ index f870288f2acc87183f272e32817bd5cf426d74d7..763c414511c5660e7071fb6863e6f964 j = this.levelData.getDayTime() + 24000L; TimeSkipEvent event = new TimeSkipEvent(this.getWorld(), TimeSkipEvent.SkipReason.NIGHT_SKIP, (j - j % 24000L) - this.getDayTime()); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b1c81d9d7d3769c56eddab029d4d24c7dd93d350..257609405527a2f3256dbdebd8681fe436f5fdc3 100644 +index 7a7fbc0f8d5f6e40c209666a83de9f7371f3e4d3..2ef12f92c5f002294bc3bf81e429b60378bbd75f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -348,6 +348,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0156-Add-config-for-villager-trading.patch b/patches/server/0156-Add-config-for-villager-trading.patch index 4e44ef85c..72daa5652 100644 --- a/patches/server/0156-Add-config-for-villager-trading.patch +++ b/patches/server/0156-Add-config-for-villager-trading.patch @@ -5,10 +5,10 @@ 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 -index 6fe8ebc19470425dd5e44b67b0c6b369a1e21365..21f9384b647264c72675889fdda2613031a57c5d 100644 +index c926a513490b91e83802ab1aea6db90b93acd206..f810e1d00c084e9a1edaa367752c040032a58d75 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -370,7 +370,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -372,7 +372,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler return tryRide(player, hand); // Purpur } else { if (level.purpurConfig.villagerRidable && itemstack.isEmpty()) return tryRide(player, hand); // Purpur @@ -18,10 +18,10 @@ index 6fe8ebc19470425dd5e44b67b0c6b369a1e21365..21f9384b647264c72675889fdda26130 } 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 d99e97d5a7291df541a939c0f21297d8c3976138..f3994e53af79a4c3bb327e43cf133a12c20662bf 100644 +index 6dd8856816bebb2766203589048cc68b3f5c8f5c..8d6930868a42b9fc98d7672bff433ec50d36999e 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -@@ -150,7 +150,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 return tryRide(player, hand); // Purpur } else { if (level.purpurConfig.wanderingTraderRidable && itemstack.isEmpty()) return tryRide(player, hand); // Purpur diff --git a/patches/server/0158-Drowning-Settings.patch b/patches/server/0158-Drowning-Settings.patch index 9623c6e3f..157ebb802 100644 --- a/patches/server/0158-Drowning-Settings.patch +++ b/patches/server/0158-Drowning-Settings.patch @@ -5,10 +5,10 @@ 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 -index 22263b4ebc98011141afea62fdd75b305255a9c7..8df3bf860fcdb9d3df9dea28c02e37183b6f338c 100644 +index 2b873a4677b3323eb99e42273dc87be875f58b6f..b038ce65364d961951836066f8e3ef4b36581093 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -2995,7 +2995,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i +@@ -3029,7 +3029,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i } public int getMaxAirSupply() { @@ -18,10 +18,10 @@ index 22263b4ebc98011141afea62fdd75b305255a9c7..8df3bf860fcdb9d3df9dea28c02e3718 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 -index 8002bcf918974ab49e7dd1800243be273a5afbe1..327473c23f5cbc0a1ae6c5660a9db0cac8a97537 100644 +index bb114e9c8fb06c6530f302f5db5ba90eb048ff05..82ef5fa5ca09fafff3c1720072158a3098b54496 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -418,7 +418,7 @@ public abstract class LivingEntity extends Entity { +@@ -421,7 +421,7 @@ public abstract class LivingEntity extends Entity { if (flag1) { this.setAirSupply(this.decreaseAirSupply(this.getAirSupply())); @@ -30,7 +30,7 @@ index 8002bcf918974ab49e7dd1800243be273a5afbe1..327473c23f5cbc0a1ae6c5660a9db0ca this.setAirSupply(0); Vec3 vec3d = this.getDeltaMovement(); -@@ -430,7 +430,7 @@ public abstract class LivingEntity extends Entity { +@@ -433,7 +433,7 @@ public abstract class LivingEntity extends Entity { this.level.addParticle(ParticleTypes.BUBBLE, this.getX() + d2, this.getY() + d3, this.getZ() + d4, vec3d.x, vec3d.y, vec3d.z); } diff --git a/patches/server/0159-Break-individual-slabs-when-sneaking.patch b/patches/server/0159-Break-individual-slabs-when-sneaking.patch index f0ec65ba9..b6f4a82d6 100644 --- a/patches/server/0159-Break-individual-slabs-when-sneaking.patch +++ b/patches/server/0159-Break-individual-slabs-when-sneaking.patch @@ -5,10 +5,10 @@ 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 -index ab73f66976d3ea3fa561a4e2d8afcce8586c5b25..0d1a833a6568128e542bde425b0ce77b4534d144 100644 +index 14465d6368ee5866bc04efe7f9e2023f60f39202..6918bf8f20149042e760a283dceeedfae3c97e3c 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -@@ -420,6 +420,7 @@ public class ServerPlayerGameMode { +@@ -430,6 +430,7 @@ public class ServerPlayerGameMode { } return false; } diff --git a/patches/server/0162-Option-to-make-doors-require-redstone.patch b/patches/server/0162-Option-to-make-doors-require-redstone.patch index 33c6c9ab4..49e8bfdf3 100644 --- a/patches/server/0162-Option-to-make-doors-require-redstone.patch +++ b/patches/server/0162-Option-to-make-doors-require-redstone.patch @@ -5,33 +5,33 @@ Subject: [PATCH] Option to make doors require redstone diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java b/src/main/java/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java -index 469dbdf09e83a1837919008c009d1a350cce4316..b0064d5913f27ab7614d01813f09eb2d74d2c48f 100644 +index 4abfeffa72bc70fd26908252ed596e816b4b9eb2..e5c20f40a63e8db215876c03ba6de9721d6675c0 100644 --- a/src/main/java/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java +++ b/src/main/java/net/minecraft/world/entity/ai/behavior/InteractWithDoor.java @@ -65,7 +65,7 @@ public class InteractWithDoor extends Behavior { - BlockPos blockposition = pathpoint.asBlockPos(); - BlockState iblockdata = world.getBlockState(blockposition); -- if (iblockdata.is((Tag) BlockTags.WOODEN_DOORS)) { -+ if (iblockdata.is(BlockTags.WOODEN_DOORS) && !DoorBlock.requiresRedstone(entity.level, iblockdata, blockposition)) { // Purpur + if (iblockdata.is(BlockTags.WOODEN_DOORS, (blockbase_blockdata) -> { + return blockbase_blockdata.getBlock() instanceof DoorBlock; +- })) { ++ }) && !DoorBlock.requiresRedstone(entity.level, iblockdata, blockposition)) { // Purpur DoorBlock blockdoor = (DoorBlock) iblockdata.getBlock(); if (!blockdoor.isOpen(iblockdata)) { -@@ -85,7 +85,7 @@ public class InteractWithDoor extends Behavior { - BlockPos blockposition1 = pathpoint1.asBlockPos(); - BlockState iblockdata1 = world.getBlockState(blockposition1); +@@ -87,7 +87,7 @@ public class InteractWithDoor extends Behavior { -- if (iblockdata1.is((Tag) BlockTags.WOODEN_DOORS)) { -+ if (iblockdata1.is(BlockTags.WOODEN_DOORS) && !DoorBlock.requiresRedstone(entity.level, iblockdata, blockposition1)) { // Purpur + if (iblockdata1.is(BlockTags.WOODEN_DOORS, (blockbase_blockdata) -> { + return blockbase_blockdata.getBlock() instanceof DoorBlock; +- })) { ++ }) && !DoorBlock.requiresRedstone(entity.level, iblockdata, blockposition1)) { // Purpur DoorBlock blockdoor1 = (DoorBlock) iblockdata1.getBlock(); if (!blockdoor1.isOpen(iblockdata1)) { -@@ -120,7 +120,7 @@ public class InteractWithDoor extends Behavior { - } else { - BlockState iblockdata = world.getBlockState(blockposition); +@@ -124,7 +124,7 @@ public class InteractWithDoor extends Behavior { -- if (!iblockdata.is((Tag) BlockTags.WOODEN_DOORS)) { -+ if (!iblockdata.is(BlockTags.WOODEN_DOORS) || DoorBlock.requiresRedstone(entity.level, iblockdata, blockposition)) { // Purpur + if (!iblockdata.is(BlockTags.WOODEN_DOORS, (blockbase_blockdata) -> { + return blockbase_blockdata.getBlock() instanceof DoorBlock; +- })) { ++ }) || DoorBlock.requiresRedstone(entity.level, iblockdata, blockposition)) { // Purpur iterator.remove(); } else { DoorBlock blockdoor = (DoorBlock) iblockdata.getBlock(); @@ -67,7 +67,7 @@ index 1df52a9c86c01696a8bc9f84a2082387160b3eeb..a4b9c5da133e2e8ad45d447e3f184cb1 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7857b39673a19474ebc22da92b7132682b8ca896..277d6900e4a429aa53b89fc52a5a2391aa0cb97a 100644 +index 3871c1fe25309c1bc0a0361e640c16de4fbd4c1d..490b1147688313660a779997ae07c33da04a1676 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -487,6 +487,16 @@ public class PurpurWorldConfig { diff --git a/patches/server/0163-Config-to-allow-for-unsafe-enchants.patch b/patches/server/0163-Config-to-allow-for-unsafe-enchants.patch index 45d138c84..276905574 100644 --- a/patches/server/0163-Config-to-allow-for-unsafe-enchants.patch +++ b/patches/server/0163-Config-to-allow-for-unsafe-enchants.patch @@ -27,10 +27,10 @@ index 514cc0e8805045549eacde6c280859aa2dc4a91d..f43fe5becfdbe9973b1cfa43c71bbad2 ++i; } else if (targets.size() == 1) { diff --git a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java -index 437127f223b738efe3532fc6b4c5b724bad99966..35ceeda917c3c49466f97b16a32c7ce9440f46c9 100644 +index 043c938baab885ce00e96985159bbd4b233e70fa..3f54c3dcb58cfb3e08149bd09c820f379b9654ba 100644 --- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java +++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java -@@ -208,7 +208,7 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -207,7 +207,7 @@ public class AnvilMenu extends ItemCombinerMenu { int i2 = (Integer) map1.get(enchantment); i2 = l1 == i2 ? i2 + 1 : Math.max(i2, l1); @@ -39,7 +39,7 @@ index 437127f223b738efe3532fc6b4c5b724bad99966..35ceeda917c3c49466f97b16a32c7ce9 if (this.player.getAbilities().instabuild || itemstack.is(Items.ENCHANTED_BOOK)) { flag3 = true; -@@ -220,7 +220,7 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -219,7 +219,7 @@ public class AnvilMenu extends ItemCombinerMenu { Enchantment enchantment1 = (Enchantment) iterator1.next(); if (enchantment1 != enchantment && !enchantment.isCompatibleWith(enchantment1)) { @@ -48,7 +48,7 @@ index 437127f223b738efe3532fc6b4c5b724bad99966..35ceeda917c3c49466f97b16a32c7ce9 ++i; } } -@@ -332,7 +332,7 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -331,7 +331,7 @@ public class AnvilMenu extends ItemCombinerMenu { sendAllDataToRemote(); // CraftBukkit - SPIGOT-6686: Always send completed inventory to stay in sync with client this.broadcastChanges(); // Purpur start @@ -58,10 +58,10 @@ index 437127f223b738efe3532fc6b4c5b724bad99966..35ceeda917c3c49466f97b16a32c7ce9 ((ServerPlayer) player).connection.send(new ClientboundContainerSetDataPacket(containerId, 0, cost.get())); } diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index ac8a90253f45a43486c1677c576231313d2d3e09..a95df369e8cdd7b7b1e31a463fdbae9017ebe2c0 100644 +index d57c6a70c0a19b840ae8003d480c480a33a0b02a..84d77fee05eda89cdd37be281e771415dcfabda4 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -1148,6 +1148,12 @@ public final class ItemStack { +@@ -1156,6 +1156,12 @@ public final class ItemStack { return this.tag != null && this.tag.contains("Enchantments", 9) ? !this.tag.getList("Enchantments", 10).isEmpty() : false; } @@ -71,7 +71,7 @@ index ac8a90253f45a43486c1677c576231313d2d3e09..a95df369e8cdd7b7b1e31a463fdbae90 + } + // Purpur end + - public void addTagElement(String key, net.minecraft.nbt.Tag element) { + public void addTagElement(String key, Tag element) { this.getOrCreateTag().put(key, element); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java diff --git a/patches/server/0164-Configurable-sponge-absorption.patch b/patches/server/0164-Configurable-sponge-absorption.patch index 88033d01e..88356d4dd 100644 --- a/patches/server/0164-Configurable-sponge-absorption.patch +++ b/patches/server/0164-Configurable-sponge-absorption.patch @@ -6,11 +6,11 @@ Subject: [PATCH] Configurable sponge absorption Allows the total area and radius of water blocks the sponge can absorb to be changed. diff --git a/src/main/java/net/minecraft/world/level/block/SpongeBlock.java b/src/main/java/net/minecraft/world/level/block/SpongeBlock.java -index 842997ea9f25a05d74a2e8300e44cc39a7e9cd96..97b4e3c0d2b1bbde77b135b8595c3bfa190a14cb 100644 +index 11b40defd5f5362346fd8a70a1141cd6425cefa7..fe4fdd21ae22970ddd8c7f5cd72bdf88b9be0a20 100644 --- a/src/main/java/net/minecraft/world/level/block/SpongeBlock.java +++ b/src/main/java/net/minecraft/world/level/block/SpongeBlock.java -@@ -77,13 +77,13 @@ public class SpongeBlock extends Block { - if (fluid.is((Tag) FluidTags.WATER)) { +@@ -76,13 +76,13 @@ public class SpongeBlock extends Block { + if (fluid.is(FluidTags.WATER)) { if (iblockdata.getBlock() instanceof BucketPickup && !((BucketPickup) iblockdata.getBlock()).pickupBlock(blockList, blockposition2, iblockdata).isEmpty()) { // CraftBukkit ++i; - if (j < 6) { @@ -25,7 +25,7 @@ index 842997ea9f25a05d74a2e8300e44cc39a7e9cd96..97b4e3c0d2b1bbde77b135b8595c3bfa queue.add(new Tuple<>(blockposition2, j + 1)); } } else if (material == Material.WATER_PLANT || material == Material.REPLACEABLE_WATER_PLANT) { -@@ -94,14 +94,14 @@ public class SpongeBlock extends Block { +@@ -93,14 +93,14 @@ public class SpongeBlock extends Block { blockList.setBlock(blockposition2, Blocks.AIR.defaultBlockState(), 3); // CraftBukkit end ++i; @@ -43,7 +43,7 @@ index 842997ea9f25a05d74a2e8300e44cc39a7e9cd96..97b4e3c0d2b1bbde77b135b8595c3bfa } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 277d6900e4a429aa53b89fc52a5a2391aa0cb97a..848fe557a3adf3cf6e66056bc14f4dd5f961355f 100644 +index 490b1147688313660a779997ae07c33da04a1676..d31159c88273c0910c52db82853678102815192f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -608,6 +608,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0168-Config-to-change-max-number-of-bees.patch b/patches/server/0168-Config-to-change-max-number-of-bees.patch index 652cc2d35..e5db9087c 100644 --- a/patches/server/0168-Config-to-change-max-number-of-bees.patch +++ b/patches/server/0168-Config-to-change-max-number-of-bees.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config to change max number of bees diff --git a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java -index b05ac56823feaf062b1418c9e6dbe4268225f00f..375f25807ca0f35784653d8fbe4e5086d7033e99 100644 +index 483dc52c793d9f90a35b1d091dd8ce71115e4640..9a6bf2159e2ad6a2204d81fd44e2b1888cd60c0c 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java -@@ -43,7 +43,7 @@ public class BeehiveBlockEntity extends BlockEntity { +@@ -42,7 +42,7 @@ public class BeehiveBlockEntity extends BlockEntity { private final List stored = Lists.newArrayList(); @Nullable public BlockPos savedFlowerPos; @@ -18,7 +18,7 @@ index b05ac56823feaf062b1418c9e6dbe4268225f00f..375f25807ca0f35784653d8fbe4e5086 public BeehiveBlockEntity(BlockPos pos, BlockState state) { super(BlockEntityType.BEEHIVE, pos, state); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 1de373851215803ace0da2058781da5d68500eb9..09d9080a019d142ab427163439ef5e259d04e6bb 100644 +index 12c0774967881168e7abc6fcb8db315458bbce8d..bd996beb468823c3b7957038eff28382d8b2c2ee 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -245,6 +245,7 @@ public class PurpurConfig { diff --git a/patches/server/0169-Configurable-damage-settings-for-magma-blocks.patch b/patches/server/0169-Configurable-damage-settings-for-magma-blocks.patch index aa9f24670..7e0cbdefa 100644 --- a/patches/server/0169-Configurable-damage-settings-for-magma-blocks.patch +++ b/patches/server/0169-Configurable-damage-settings-for-magma-blocks.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable damage settings for magma blocks diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 8df3bf860fcdb9d3df9dea28c02e37183b6f338c..a0dfd64a6bd7da1e15abf12e82648d7d781152f5 100644 +index b038ce65364d961951836066f8e3ef4b36581093..539e4080ccd63007999ec2876b272d63e3ba9880 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -1058,7 +1058,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i +@@ -1071,7 +1071,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i } // CraftBukkit end @@ -18,10 +18,10 @@ index 8df3bf860fcdb9d3df9dea28c02e37183b6f338c..a0dfd64a6bd7da1e15abf12e82648d7d } diff --git a/src/main/java/net/minecraft/world/level/block/MagmaBlock.java b/src/main/java/net/minecraft/world/level/block/MagmaBlock.java -index 96b4597101a7f3e98ce30bfc301e8ca1620d0fe4..d7845984b5077cdcd40d652c226d5d60bb823dbe 100644 +index be40f6f68b7273cbc50a0b9658e4b0981f723674..6701d35a8911cccbcb4ce77dfc0393a5172f0120 100644 --- a/src/main/java/net/minecraft/world/level/block/MagmaBlock.java +++ b/src/main/java/net/minecraft/world/level/block/MagmaBlock.java -@@ -29,7 +29,7 @@ public class MagmaBlock extends Block { +@@ -28,7 +28,7 @@ public class MagmaBlock extends Block { @Override public void stepOn(Level world, BlockPos pos, BlockState state, Entity entity) { diff --git a/patches/server/0174-Configurable-broadcast-settings.patch b/patches/server/0174-Configurable-broadcast-settings.patch index b375fe1ba..7bef4ef79 100644 --- a/patches/server/0174-Configurable-broadcast-settings.patch +++ b/patches/server/0174-Configurable-broadcast-settings.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable broadcast settings diff --git a/src/main/java/net/minecraft/server/PlayerAdvancements.java b/src/main/java/net/minecraft/server/PlayerAdvancements.java -index 6f5b7650d45958284f7b5c675c1e32d4b7738494..842acb66c58a1ee66c595bd56afc1f94602f0193 100644 +index 048413655ef636b3dae687452fc5a95780058a22..f7f10a523cd08fddf1f14968cb1abd4aea56f421 100644 --- a/src/main/java/net/minecraft/server/PlayerAdvancements.java +++ b/src/main/java/net/minecraft/server/PlayerAdvancements.java @@ -301,6 +301,7 @@ public class PlayerAdvancements { @@ -17,10 +17,10 @@ index 6f5b7650d45958284f7b5c675c1e32d4b7738494..842acb66c58a1ee66c595bd56afc1f94 // Paper end } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 97f1d557c8627c8fe201dafd457a9f31caec14e3..38a01e62ca99da9d8453b6275c5a1b22fcfa9b9e 100644 +index bf7aebfdb5f1778c2ed4cd8bb84edd2de8251acf..96c5a7aa62703467a0325d5203ff21a8f6e3fc07 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -910,6 +910,7 @@ public class ServerPlayer extends Player { +@@ -908,6 +908,7 @@ public class ServerPlayer extends Player { }); Team scoreboardteambase = this.getTeam(); @@ -29,7 +29,7 @@ index 97f1d557c8627c8fe201dafd457a9f31caec14e3..38a01e62ca99da9d8453b6275c5a1b22 if (scoreboardteambase.getDeathMessageVisibility() == Team.Visibility.HIDE_FOR_OTHER_TEAMS) { this.server.getPlayerList().broadcastToTeam(this, ichatbasecomponent); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index c3b00e02754f901fe2723cb536ced393ecc95e86..d3a26894b75a7222c6cd8208667fbb0d41d25118 100644 +index dd6468098ca71bfc4e4a41e019a5315dcada1e78..28033b120ef5abebca97f477f88afe8c17b89bda 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -198,6 +198,18 @@ public class PurpurConfig { diff --git a/patches/server/0175-Configurable-mob-blindness.patch b/patches/server/0175-Configurable-mob-blindness.patch index 74725d445..bfaaed13b 100644 --- a/patches/server/0175-Configurable-mob-blindness.patch +++ b/patches/server/0175-Configurable-mob-blindness.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Configurable mob blindness 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 -index 3de96928961351c25af561068643a016c197667b..d1ba2930cbbab31d9a1d726db1fd99295555867a 100644 +index 82ef5fa5ca09fafff3c1720072158a3098b54496..4be548422d14ae4d8800e73c4e91f55f67a1bfee 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -985,6 +985,17 @@ public abstract class LivingEntity extends Entity { +@@ -988,6 +988,17 @@ public abstract class LivingEntity extends Entity { if (entitytypes == EntityType.SKELETON && itemstack.is(Items.SKELETON_SKULL) || entitytypes == EntityType.ZOMBIE && itemstack.is(Items.ZOMBIE_HEAD) || entitytypes == EntityType.CREEPER && itemstack.is(Items.CREEPER_HEAD)) { d0 *= 0.5D; } diff --git a/patches/server/0179-Breedable-parrots.patch b/patches/server/0179-Breedable-parrots.patch index 1b5c6186a..7f3aa6d78 100644 --- a/patches/server/0179-Breedable-parrots.patch +++ b/patches/server/0179-Breedable-parrots.patch @@ -5,10 +5,10 @@ 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 -index ee52e83375521fa41369161356802c305deb605d..d68bb48cf703a3ed0bf843d5c0ab9caad4727214 100644 +index c266028b96dcdb4d6dbb161a5f16be0d38827a91..661d8ce472a5f57107035ec32158aea30e1d181b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -@@ -225,6 +225,7 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { +@@ -223,6 +223,7 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { this.goalSelector.addGoal(0, new FloatGoal(this)); this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.goalSelector.addGoal(1, new PanicGoal(this, 1.25D)); // Purpur @@ -16,7 +16,7 @@ index ee52e83375521fa41369161356802c305deb605d..d68bb48cf703a3ed0bf843d5c0ab9caa this.goalSelector.addGoal(1, new LookAtPlayerGoal(this, Player.class, 8.0F)); this.goalSelector.addGoal(2, new SitWhenOrderedToGoal(this)); this.goalSelector.addGoal(2, new FollowOwnerGoal(this, 1.0D, 5.0F, 1.0F, true)); -@@ -339,6 +340,7 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { +@@ -337,6 +338,7 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { } } @@ -24,7 +24,7 @@ index ee52e83375521fa41369161356802c305deb605d..d68bb48cf703a3ed0bf843d5c0ab9caa return InteractionResult.sidedSuccess(this.level.isClientSide); } else if (itemstack.is(Parrot.POISONOUS_FOOD)) { if (!player.getAbilities().instabuild) { -@@ -364,7 +366,7 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { +@@ -362,7 +364,7 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { @Override public boolean isFood(ItemStack stack) { @@ -33,7 +33,7 @@ index ee52e83375521fa41369161356802c305deb605d..d68bb48cf703a3ed0bf843d5c0ab9caa } public static boolean checkParrotSpawnRules(EntityType type, LevelAccessor world, MobSpawnType spawnReason, BlockPos pos, Random random) { -@@ -381,13 +383,13 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { +@@ -379,13 +381,13 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { @Override public boolean canMate(Animal other) { diff --git a/patches/server/0180-Configurable-powered-rail-boost-modifier.patch b/patches/server/0180-Configurable-powered-rail-boost-modifier.patch index 7c5277c1a..da22a41e5 100644 --- a/patches/server/0180-Configurable-powered-rail-boost-modifier.patch +++ b/patches/server/0180-Configurable-powered-rail-boost-modifier.patch @@ -5,10 +5,10 @@ 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 -index 6b58b32711b3aba9b7de9e7dee6d02073dad3b7f..0e6f2d1d48910c573ec2237002a02f334a5d05b0 100644 +index dac3f948481e444b3b641ab00eabca0cc8f17fa8..9645ae9425333025ced53d7c5ddc88f17c6be428 100644 --- a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java +++ b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java -@@ -713,7 +713,7 @@ public abstract class AbstractMinecart extends Entity { +@@ -712,7 +712,7 @@ public abstract class AbstractMinecart extends Entity { if (d18 > 0.01D) { double d20 = 0.06D; @@ -18,7 +18,7 @@ index 6b58b32711b3aba9b7de9e7dee6d02073dad3b7f..0e6f2d1d48910c573ec2237002a02f33 Vec3 vec3d5 = this.getDeltaMovement(); double d21 = vec3d5.x; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 438bc081a07e33fa250b4daee9894e8cf74edfe4..454762868f010804f23f8251ca9015e6a74baf86 100644 +index 90d0cbe43c6feffb3ab8d0c7be970a3a4219f869..28af6e298e78811ce4e53de5bdb3fb384a966924 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -265,6 +265,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0181-Add-config-change-multiplier-critical-damage-value.patch b/patches/server/0181-Add-config-change-multiplier-critical-damage-value.patch index ac65a725c..b29fdf1c4 100644 --- a/patches/server/0181-Add-config-change-multiplier-critical-damage-value.patch +++ b/patches/server/0181-Add-config-change-multiplier-critical-damage-value.patch @@ -5,10 +5,10 @@ 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 -index 36f9e0c9fd1ad9550d454317ee011da6450abf4a..3b25bbb0cc86c8fba1fb770556c0f8c9ef6ac46e 100644 +index dcfb5cd4f069136a4e5507c6777d0841457a893d..99e75679acfe2c9d8583590008c14aad8d73d203 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -1255,7 +1255,7 @@ public abstract class Player extends LivingEntity { +@@ -1268,7 +1268,7 @@ public abstract class Player extends LivingEntity { flag2 = flag2 && !level.paperConfig.disablePlayerCrits; // Paper flag2 = flag2 && !this.isSprinting(); if (flag2) { diff --git a/patches/server/0183-Config-for-unverified-username-message.patch b/patches/server/0183-Config-for-unverified-username-message.patch index d51634a7f..54f7c49cf 100644 --- a/patches/server/0183-Config-for-unverified-username-message.patch +++ b/patches/server/0183-Config-for-unverified-username-message.patch @@ -5,20 +5,20 @@ Subject: [PATCH] Config for unverified username message diff --git a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java -index 368e32bc12a1a09bf7309f299a1a72554947f43b..5f154db373026ca78b812f9247dc9288d6826cb0 100644 +index befcb501b4b1b6330bf3cd53e00e30b01efade6f..03eb7933f309b30fa8c243f4dd0a292b850bfda0 100644 --- a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java -@@ -339,7 +339,7 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener +@@ -342,7 +342,7 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener ServerLoginPacketListenerImpl.this.gameProfile = ServerLoginPacketListenerImpl.this.createFakeProfile(gameprofile); ServerLoginPacketListenerImpl.this.state = ServerLoginPacketListenerImpl.State.READY_TO_ACCEPT; } else { - ServerLoginPacketListenerImpl.this.disconnect(new TranslatableComponent("multiplayer.disconnect.unverified_username")); -+ ServerLoginPacketListenerImpl.this.disconnect(org.purpurmc.purpur.PurpurConfig.unverifiedUsername.equals("default") ? new TranslatableComponent("multiplayer.disconnect.unverified_username") : PaperAdventure.asVanilla(net.kyori.adventure.text.minimessage.MiniMessage.get().parse(org.purpurmc.purpur.PurpurConfig.unverifiedUsername))); // Purpur ++ ServerLoginPacketListenerImpl.this.disconnect(org.purpurmc.purpur.PurpurConfig.unverifiedUsername.equals("default") ? new TranslatableComponent("multiplayer.disconnect.unverified_username") : io.papermc.paper.adventure.PaperAdventure.asVanilla(net.kyori.adventure.text.minimessage.MiniMessage.miniMessage().deserialize(org.purpurmc.purpur.PurpurConfig.unverifiedUsername))); // Purpur ServerLoginPacketListenerImpl.LOGGER.error("Username '{}' tried to join with an invalid session", gameprofile.getName()); } } catch (AuthenticationUnavailableException authenticationunavailableexception) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 728c0a362c182f72f1142cea8e98354093766d34..a6fb98f10028978013b5b44ae182571a74a4d084 100644 +index 7500d4b32b6d9f9996f6b382e88cf8b14beefea9..799340bb7e603805d009357cabe6bb9ff2219d88 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -178,6 +178,7 @@ public class PurpurConfig { diff --git a/patches/server/0184-Make-anvil-cumulative-cost-configurable.patch b/patches/server/0184-Make-anvil-cumulative-cost-configurable.patch index ed6d52dbf..73f37671e 100644 --- a/patches/server/0184-Make-anvil-cumulative-cost-configurable.patch +++ b/patches/server/0184-Make-anvil-cumulative-cost-configurable.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Make anvil cumulative cost configurable diff --git a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java -index 35ceeda917c3c49466f97b16a32c7ce9440f46c9..d2ba5cd4d52105d91fd1e67fc6d05d72cfd5dfea 100644 +index 3f54c3dcb58cfb3e08149bd09c820f379b9654ba..1c7f18e2ddc6b3c4a91b0545374f49ebcc6baaa0 100644 --- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java +++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java -@@ -341,7 +341,7 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -340,7 +340,7 @@ public class AnvilMenu extends ItemCombinerMenu { } public static int calculateIncreasedRepairCost(int cost) { @@ -18,7 +18,7 @@ index 35ceeda917c3c49466f97b16a32c7ce9440f46c9..d2ba5cd4d52105d91fd1e67fc6d05d72 public void setItemName(String newItemName) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 41e5dee301c2a0b6ab603c3ebe1b9eccf7b3e7c8..d1c67ef98ce3b6db9a40b1c0734ea943f98b45c6 100644 +index 799340bb7e603805d009357cabe6bb9ff2219d88..611fbde429a6742715c54dfd61f8b0a9877c18da 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -264,6 +264,7 @@ public class PurpurConfig { diff --git a/patches/server/0185-ShulkerBox-allow-oversized-stacks.patch b/patches/server/0185-ShulkerBox-allow-oversized-stacks.patch index d88198008..f0d03b5e5 100644 --- a/patches/server/0185-ShulkerBox-allow-oversized-stacks.patch +++ b/patches/server/0185-ShulkerBox-allow-oversized-stacks.patch @@ -9,10 +9,10 @@ creating an itemstack using the TileEntity's NBT data (how it handles it for 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 -index 0d1a833a6568128e542bde425b0ce77b4534d144..5524d85aaf3fc8c0bc561fa4a88e82d416fab83d 100644 +index 6918bf8f20149042e760a283dceeedfae3c97e3c..ac151f2e519a3544f38b9c6ef87c41a2bf4e9c4c 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -@@ -449,7 +449,7 @@ public class ServerPlayerGameMode { +@@ -459,7 +459,7 @@ public class ServerPlayerGameMode { block.destroy(this.level, pos, iblockdata); } diff --git a/patches/server/0186-Bee-can-work-when-raining-or-at-night.patch b/patches/server/0186-Bee-can-work-when-raining-or-at-night.patch index f4ca328be..dd026c799 100644 --- a/patches/server/0186-Bee-can-work-when-raining-or-at-night.patch +++ b/patches/server/0186-Bee-can-work-when-raining-or-at-night.patch @@ -5,10 +5,10 @@ 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 -index 0c0c900d07d2869baa5fdd669ceecf4ad3477807..c69d0cc9ed74e4e06465aebff07b6b50c227fb28 100644 +index ff9ec34962cdcd018a56bd39310b345d0adaf5cd..ca7225e80e1612120ac9b197e0188a06df8049a7 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java -@@ -411,7 +411,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -409,7 +409,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { boolean wantsToEnterHive() { if (this.stayOutOfHiveCountdown <= 0 && !this.beePollinateGoal.isPollinating() && !this.hasStung() && this.getTarget() == null) { @@ -18,10 +18,10 @@ index 0c0c900d07d2869baa5fdd669ceecf4ad3477807..c69d0cc9ed74e4e06465aebff07b6b50 return flag && !this.isHiveNearFire(); } else { diff --git a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java -index 375f25807ca0f35784653d8fbe4e5086d7033e99..096308b577c68502fed1f4c10c0dfc2a9c3515e8 100644 +index 9a6bf2159e2ad6a2204d81fd44e2b1888cd60c0c..9eee0366ab790e3bd183eacdc3940ab5e10f01e2 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java -@@ -202,7 +202,7 @@ public class BeehiveBlockEntity extends BlockEntity { +@@ -201,7 +201,7 @@ public class BeehiveBlockEntity extends BlockEntity { } private static boolean releaseBee(Level world, BlockPos blockposition, BlockState iblockdata, BeehiveBlockEntity.BeeData tileentitybeehive_hivebee, @Nullable List list, BeehiveBlockEntity.BeeReleaseStatus tileentitybeehive_releasestatus, @Nullable BlockPos blockposition1, boolean force) { @@ -31,7 +31,7 @@ index 375f25807ca0f35784653d8fbe4e5086d7033e99..096308b577c68502fed1f4c10c0dfc2a return false; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 16de2736966c52994836377418d7f642789f91b0..1e0d78ae199e7d3a240b94e44128e254c4762f7f 100644 +index 476b6018dc378599902d895f05e3e5babcec1a9d..020b86d6237745f45285f99b5bc2f6c9912c8277 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -759,6 +759,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0187-API-for-any-mob-to-burn-daylight.patch b/patches/server/0187-API-for-any-mob-to-burn-daylight.patch index 662fe2e4f..57c533359 100644 --- a/patches/server/0187-API-for-any-mob-to-burn-daylight.patch +++ b/patches/server/0187-API-for-any-mob-to-burn-daylight.patch @@ -6,10 +6,10 @@ Subject: [PATCH] API for any mob to burn daylight Co-authored by: Encode42 diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index e414f44168a03874910c5ebdb865fe39d91e27b7..7e85785b902a2ef72c09d53f0e24cb2ab96b0b58 100644 +index 539e4080ccd63007999ec2876b272d63e3ba9880..76d953defbef937cca168b1ef38ce22337e48b40 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -4461,5 +4461,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i +@@ -4500,5 +4500,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i public boolean canSaveToDisk() { return true; } @@ -29,10 +29,10 @@ index e414f44168a03874910c5ebdb865fe39d91e27b7..7e85785b902a2ef72c09d53f0e24cb2a // Purpur end } diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 951e583826598a19e92d3e2a02ebd0c7536460d1..17eb40a73e3d73e2fd24ec411c0d76ebf9ae6490 100644 +index 4be548422d14ae4d8800e73c4e91f55f67a1bfee..2773267524a58219876a84aa44b97094e155883a 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -260,6 +260,7 @@ public abstract class LivingEntity extends Entity { +@@ -263,6 +263,7 @@ public abstract class LivingEntity extends Entity { public boolean bukkitPickUpLoot; public org.bukkit.craftbukkit.entity.CraftLivingEntity getBukkitLivingEntity() { return (org.bukkit.craftbukkit.entity.CraftLivingEntity) super.getBukkitEntity(); } // Paper public boolean silentDeath = false; // Paper - mark entity as dying silently for cancellable death event @@ -40,7 +40,7 @@ index 951e583826598a19e92d3e2a02ebd0c7536460d1..17eb40a73e3d73e2fd24ec411c0d76eb @Override public float getBukkitYaw() { -@@ -762,6 +763,7 @@ public abstract class LivingEntity extends Entity { +@@ -765,6 +766,7 @@ public abstract class LivingEntity extends Entity { dataresult.resultOrPartial(logger::error).ifPresent((nbtbase) -> { nbt.put("Brain", nbtbase); }); @@ -48,7 +48,7 @@ index 951e583826598a19e92d3e2a02ebd0c7536460d1..17eb40a73e3d73e2fd24ec411c0d76eb } @Override -@@ -837,6 +839,11 @@ public abstract class LivingEntity extends Entity { +@@ -840,6 +842,11 @@ public abstract class LivingEntity extends Entity { this.brain = this.makeBrain(new Dynamic(NbtOps.INSTANCE, nbt.get("Brain"))); } @@ -60,7 +60,7 @@ index 951e583826598a19e92d3e2a02ebd0c7536460d1..17eb40a73e3d73e2fd24ec411c0d76eb } // CraftBukkit start -@@ -3436,6 +3443,27 @@ public abstract class LivingEntity extends Entity { +@@ -3439,6 +3446,27 @@ public abstract class LivingEntity extends Entity { this.hurt(DamageSource.DROWN, 1.0F); } @@ -89,7 +89,7 @@ index 951e583826598a19e92d3e2a02ebd0c7536460d1..17eb40a73e3d73e2fd24ec411c0d76eb 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 -index e569ca15ded9dc4f85dd9d6431470be6844ed593..1441619edfe075c176ef8e2606eb6f5251558e6c 100644 +index a7cb8255cfda572ba77d3350703c03c08d4eaf42..e8c3ff0319ef475bddd110346261ef91a0caabba 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -1660,17 +1660,7 @@ public abstract class Mob extends LivingEntity { @@ -209,7 +209,7 @@ index 065005c13c2bff341402fc962d19148da27bc3c2..e394b6427329f48a85a277eeb8336b12 @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 -index 5dd3f8df73bb02992b040f14d17c0861d715c5ba..273dc55813aef1a2285ac66703199626cf14c04b 100644 +index e7e4d87fb8a5276fd617afc4e0b925100abf3f76..42919b2267eed71e29830a96afdd3be19d6b6f68 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java @@ -60,6 +60,7 @@ public class Phantom extends FlyingMob implements Enemy { @@ -273,7 +273,7 @@ index 5dd3f8df73bb02992b040f14d17c0861d715c5ba..273dc55813aef1a2285ac66703199626 // Paper end 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 -index 4b288fe8923bb4beefb88e8196bfb4d5d2b10b8b..e4e357af439c9a02b8013ce3349ff582495ee80e 100644 +index 15bbf62f1dab73b501044c6ada0f6f3b09ab07df..695ff6b65114a2aea761e55d61bea6d49d804f2e 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -93,11 +93,12 @@ public class Zombie extends Monster { @@ -349,7 +349,7 @@ index 4b288fe8923bb4beefb88e8196bfb4d5d2b10b8b..e4e357af439c9a02b8013ce3349ff582 // Paper end diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index e875bc08aaecc41db09ca0ffa00ff0f1ba40d350..f46ce327586781f74d8feb47e6a904d732888289 100644 +index 83c8889137e566322ec4337b0e6d8b940cc2edbe..d575da51b4f1318734ebf26a3730871134e28102 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -199,6 +199,11 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { diff --git a/patches/server/0189-Beacon-Activation-Range-Configurable.patch b/patches/server/0189-Beacon-Activation-Range-Configurable.patch index 048ae28c0..93607c1c9 100644 --- a/patches/server/0189-Beacon-Activation-Range-Configurable.patch +++ b/patches/server/0189-Beacon-Activation-Range-Configurable.patch @@ -5,10 +5,10 @@ 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 -index 80b2af5cf89f7e33127dbee1bb5f9bc50b6e476f..3db1029a5bbe4b7eeb8c484852dd754fa34697fb 100644 +index 8d5c9813010a0256bd2712a1eabbc91f0f473a41..97b106ccac4e37260444468f4f774efcfb61788d 100644 --- a/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 { +@@ -83,6 +83,16 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider { public double getEffectRange() { if (this.effectRange < 0) { @@ -26,7 +26,7 @@ index 80b2af5cf89f7e33127dbee1bb5f9bc50b6e476f..3db1029a5bbe4b7eeb8c484852dd754f } else { return effectRange; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5c403c34d4a741d4a4624d76554991f248fbc717..adba39208de6efd5f210b19b919aa2a051dd1ec7 100644 +index 1f4857e05643942b44a2506aa22301903f2e9d37..42db30881bda2917783e14210df3f74c72f12193 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -507,6 +507,17 @@ public class PurpurWorldConfig { diff --git a/patches/server/0190-Add-toggle-for-sand-duping-fix.patch b/patches/server/0190-Add-toggle-for-sand-duping-fix.patch index 7a94d77f0..edaf1f559 100644 --- a/patches/server/0190-Add-toggle-for-sand-duping-fix.patch +++ b/patches/server/0190-Add-toggle-for-sand-duping-fix.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add toggle for sand duping fix diff --git a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java -index 0c94b4cb6ee0c3dffe0b67a2291d0160ae0ef96f..92a9869dbabcaa704a0da8bc86f7578661197903 100644 +index 880521f25a6c8483c79043f237866cb7a49c3a54..55b23782f477d7ce9c21089addd06f0b95c8f8fd 100644 --- a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java +++ b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java -@@ -111,7 +111,7 @@ public class FallingBlockEntity extends Entity { +@@ -120,7 +120,7 @@ public class FallingBlockEntity extends Entity { @Override public void tick() { // Paper start - fix sand duping @@ -17,7 +17,7 @@ index 0c94b4cb6ee0c3dffe0b67a2291d0160ae0ef96f..92a9869dbabcaa704a0da8bc86f75786 return; } // Paper end - fix sand duping -@@ -153,7 +153,7 @@ public class FallingBlockEntity extends Entity { +@@ -137,7 +137,7 @@ public class FallingBlockEntity extends Entity { this.move(MoverType.SELF, this.getDeltaMovement()); // Paper start - fix sand duping @@ -27,7 +27,7 @@ index 0c94b4cb6ee0c3dffe0b67a2291d0160ae0ef96f..92a9869dbabcaa704a0da8bc86f75786 } // Paper end - fix sand duping diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index adba39208de6efd5f210b19b919aa2a051dd1ec7..763683bab10f63f01ac2a6bbb8db0e930c2b55cd 100644 +index 42db30881bda2917783e14210df3f74c72f12193..1f864bdc1e6d8cc389c0c9bccafb9ef596ce366a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -679,6 +679,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0191-Add-toggle-for-end-portal-safe-teleporting.patch b/patches/server/0191-Add-toggle-for-end-portal-safe-teleporting.patch index 5537caed6..dd46daa95 100644 --- a/patches/server/0191-Add-toggle-for-end-portal-safe-teleporting.patch +++ b/patches/server/0191-Add-toggle-for-end-portal-safe-teleporting.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add toggle for end portal safe teleporting diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index cfe2230245d6b04619c886a46e3b4aca4c01e50b..3d2e00dd971b21848679c4e386e6357592320dd0 100644 +index 76d953defbef937cca168b1ef38ce22337e48b40..b63fde99b966ee2c2acdc0feeef08461ef7b5816 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -2812,7 +2812,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i +@@ -2846,7 +2846,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i } this.processPortalCooldown(); @@ -45,7 +45,7 @@ index bd4f980f68330fc46a02a6f4bb4403fac3a91919..8601ea0575323ea7cf07c4909a495bf5 entity.portalWorld = ((ServerLevel)world); entity.portalBlock = pos.immutable(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 550f278b95ef460ba5bc896007f3a8de18a71584..836b22154c98e6cd9e1abfce23c4d4d6c861b90e 100644 +index 1f864bdc1e6d8cc389c0c9bccafb9ef596ce366a..90fb53ea2de11f24024240fa35bd4dd4da333d0e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -621,6 +621,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0192-Flying-Fall-Damage-API.patch b/patches/server/0192-Flying-Fall-Damage-API.patch index 290b2ec1c..ff987377f 100644 --- a/patches/server/0192-Flying-Fall-Damage-API.patch +++ b/patches/server/0192-Flying-Fall-Damage-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Flying Fall Damage API 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 3b25bbb0cc86c8fba1fb770556c0f8c9ef6ac46e..15a8c193d7f5a0dda7e3d2d1aa967a918741cf80 100644 +index 99e75679acfe2c9d8583590008c14aad8d73d203..001317b9c196390dac8fe16d2aadf7e11bb97221 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -181,6 +181,7 @@ public abstract class Player extends LivingEntity { +@@ -182,6 +182,7 @@ public abstract class Player extends LivingEntity { public boolean affectsSpawning = true; // Paper end public int sixRowEnderchestSlotCount = -1; // Purpur @@ -16,7 +16,7 @@ index 3b25bbb0cc86c8fba1fb770556c0f8c9ef6ac46e..15a8c193d7f5a0dda7e3d2d1aa967a91 // CraftBukkit start public boolean fauxSleeping; -@@ -1729,7 +1730,7 @@ public abstract class Player extends LivingEntity { +@@ -1742,7 +1743,7 @@ public abstract class Player extends LivingEntity { @Override public boolean causeFallDamage(float fallDistance, float damageMultiplier, DamageSource damageSource) { @@ -26,7 +26,7 @@ index 3b25bbb0cc86c8fba1fb770556c0f8c9ef6ac46e..15a8c193d7f5a0dda7e3d2d1aa967a91 } else { if (fallDistance >= 2.0F) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 9ff46a5aaecbf66edb8dc76924d4b3427d9bfb8f..6c6b60119aa89637c822746b77e440f97a186b95 100644 +index 20b42ea8b055ad37417ca73dbd616e1ace761c45..95bdd555f13f4d75b93d77cd11080e7b9f9ef028 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -2765,5 +2765,14 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0193-Make-lightning-rod-range-configurable.patch b/patches/server/0193-Make-lightning-rod-range-configurable.patch index 23654f08e..0cbbbdaaa 100644 --- a/patches/server/0193-Make-lightning-rod-range-configurable.patch +++ b/patches/server/0193-Make-lightning-rod-range-configurable.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Make lightning rod range configurable diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index dc06ae09fbf81998a92ec1e9fb1fc6514a54183c..3cfb792fe6c55a0db9c53ebe375b33533306dd6a 100644 +index be0e83831f9eea27a3a323c234165b3af4ac652a..91633d891c6a5d7c54c996240f657d47ac705a05 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -918,7 +918,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -914,7 +914,7 @@ public class ServerLevel extends Level implements WorldGenLevel { return villageplacetype == PoiType.LIGHTNING_ROD; }, (blockposition1) -> { return blockposition1.getY() == this.getLevel().getHeight(Heightmap.Types.WORLD_SURFACE, blockposition1.getX(), blockposition1.getZ()) - 1; @@ -18,7 +18,7 @@ index dc06ae09fbf81998a92ec1e9fb1fc6514a54183c..3cfb792fe6c55a0db9c53ebe375b3353 return optional.map((blockposition1) -> { return blockposition1.above(1); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index d1c67ef98ce3b6db9a40b1c0734ea943f98b45c6..b5cdb57e9d6b67606bd629783a07f8e7ae93806b 100644 +index 611fbde429a6742715c54dfd61f8b0a9877c18da..792255c3f9499180a746175bf07f2890577332b5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -265,6 +265,7 @@ public class PurpurConfig { diff --git a/patches/server/0194-Burp-after-eating-food-fills-hunger-bar-completely.patch b/patches/server/0194-Burp-after-eating-food-fills-hunger-bar-completely.patch index e07ab3f84..9fe05a4c8 100644 --- a/patches/server/0194-Burp-after-eating-food-fills-hunger-bar-completely.patch +++ b/patches/server/0194-Burp-after-eating-food-fills-hunger-bar-completely.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Burp after eating food fills hunger bar completely 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 15a8c193d7f5a0dda7e3d2d1aa967a918741cf80..536552f9764a647246c218c102690db958814348 100644 +index 001317b9c196390dac8fe16d2aadf7e11bb97221..35431662e92c9ba1f350df7113cdf0239a22d03d 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -194,6 +194,8 @@ public abstract class Player extends LivingEntity { +@@ -195,6 +195,8 @@ public abstract class Player extends LivingEntity { // CraftBukkit end // Purpur start @@ -17,7 +17,7 @@ index 15a8c193d7f5a0dda7e3d2d1aa967a918741cf80..536552f9764a647246c218c102690db9 public abstract void resetLastActionTime(); public void setAfk(boolean afk) { -@@ -256,6 +258,12 @@ public abstract class Player extends LivingEntity { +@@ -257,6 +259,12 @@ public abstract class Player extends LivingEntity { @Override public void tick() { @@ -30,7 +30,7 @@ index 15a8c193d7f5a0dda7e3d2d1aa967a918741cf80..536552f9764a647246c218c102690db9 this.noPhysics = this.isSpectator(); if (this.isSpectator()) { this.onGround = false; -@@ -2298,7 +2306,7 @@ public abstract class Player extends LivingEntity { +@@ -2311,7 +2319,7 @@ public abstract class Player extends LivingEntity { public ItemStack eat(Level world, ItemStack stack) { this.getFoodData().eat(stack.getItem(), stack); this.awardStat(Stats.ITEM_USED.get(stack.getItem())); diff --git a/patches/server/0196-Add-permission-bypass-for-portal-waiting.patch b/patches/server/0196-Add-permission-bypass-for-portal-waiting.patch index 4f41f0ff1..69cd9df36 100644 --- a/patches/server/0196-Add-permission-bypass-for-portal-waiting.patch +++ b/patches/server/0196-Add-permission-bypass-for-portal-waiting.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add permission bypass for portal waiting 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 536552f9764a647246c218c102690db958814348..e4c129f0dcf61bcb5ca5f1afe7486ffe021607d5 100644 +index 35431662e92c9ba1f350df7113cdf0239a22d03d..75393ff3aafa01eaa911149d0173da28c236f7c2 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -182,6 +182,7 @@ public abstract class Player extends LivingEntity { +@@ -183,6 +183,7 @@ public abstract class Player extends LivingEntity { // Paper end public int sixRowEnderchestSlotCount = -1; // Purpur public boolean flyingFallDamage = false; // Purpur @@ -16,7 +16,7 @@ index 536552f9764a647246c218c102690db958814348..e4c129f0dcf61bcb5ca5f1afe7486ffe // CraftBukkit start public boolean fauxSleeping; -@@ -463,7 +464,7 @@ public abstract class Player extends LivingEntity { +@@ -464,7 +465,7 @@ public abstract class Player extends LivingEntity { @Override public int getPortalWaitTime() { diff --git a/patches/server/0199-Option-to-make-drowned-break-doors.patch b/patches/server/0199-Option-to-make-drowned-break-doors.patch index 26dd2148c..0d243411c 100644 --- a/patches/server/0199-Option-to-make-drowned-break-doors.patch +++ b/patches/server/0199-Option-to-make-drowned-break-doors.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Option to make drowned break doors diff --git a/src/main/java/net/minecraft/world/entity/monster/Drowned.java b/src/main/java/net/minecraft/world/entity/monster/Drowned.java -index a2f71b1ba0df62910df528103e8695a2762fe1df..699d4f1a60bb15a04dddbce6486ce10abd417a87 100644 +index 8a68469769cfe8ac596b3f2c990e0375d7d1dcaf..801e9919dbb197549372afb1b380cdb5f0c9290d 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java +++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java -@@ -30,6 +30,7 @@ import net.minecraft.world.entity.ai.goal.MoveToBlockGoal; +@@ -28,6 +28,7 @@ import net.minecraft.world.entity.ai.goal.MoveToBlockGoal; import net.minecraft.world.entity.ai.goal.RandomStrollGoal; import net.minecraft.world.entity.ai.goal.RangedAttackGoal; import net.minecraft.world.entity.ai.goal.ZombieAttackGoal; @@ -16,7 +16,7 @@ index a2f71b1ba0df62910df528103e8695a2762fe1df..699d4f1a60bb15a04dddbce6486ce10a import net.minecraft.world.entity.ai.goal.target.HurtByTargetGoal; import net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal; import net.minecraft.world.entity.ai.navigation.GroundPathNavigation; -@@ -123,6 +124,7 @@ public class Drowned extends Zombie implements RangedAttackMob { +@@ -121,6 +122,7 @@ public class Drowned extends Zombie implements RangedAttackMob { this.goalSelector.addGoal(2, new Drowned.DrownedAttackGoal(this, 1.0D, false)); this.goalSelector.addGoal(5, new Drowned.DrownedGoToBeachGoal(this, 1.0D)); this.goalSelector.addGoal(6, new Drowned.DrownedSwimUpGoal(this, 1.0D, this.level.getSeaLevel())); @@ -24,7 +24,7 @@ index a2f71b1ba0df62910df528103e8695a2762fe1df..699d4f1a60bb15a04dddbce6486ce10a this.goalSelector.addGoal(7, new RandomStrollGoal(this, 1.0D)); this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, Drowned.class)).setAlertOthers(ZombifiedPiglin.class)); this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, this::okTarget)); -@@ -175,7 +177,7 @@ public class Drowned extends Zombie implements RangedAttackMob { +@@ -173,7 +175,7 @@ public class Drowned extends Zombie implements RangedAttackMob { @Override public boolean supportsBreakDoorGoal() { @@ -34,7 +34,7 @@ index a2f71b1ba0df62910df528103e8695a2762fe1df..699d4f1a60bb15a04dddbce6486ce10a @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index af024fb85a500b6c73e099f2e69535da4e693629..d3f73582dc2d732710ce6f6a2ca6a7f2353afe8e 100644 +index 08ebf171bae53b7140f3a572da3ef38df8fec480..1821bee2b071804016db70c180741839ecef9ca6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1037,6 +1037,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0202-Armor-click-equip-options.patch b/patches/server/0202-Armor-click-equip-options.patch index ee763e2e4..3d7c8d09f 100644 --- a/patches/server/0202-Armor-click-equip-options.patch +++ b/patches/server/0202-Armor-click-equip-options.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Armor click equip options diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -index 5524d85aaf3fc8c0bc561fa4a88e82d416fab83d..7b09735818f027aced43158978bc54795618b64b 100644 +index ac151f2e519a3544f38b9c6ef87c41a2bf4e9c4c..c42e6e74075f9513d3b3f2006fb5117743289516 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -@@ -499,7 +499,7 @@ public class ServerPlayerGameMode { +@@ -509,7 +509,7 @@ public class ServerPlayerGameMode { return interactionresultwrapper.getResult(); } else { player.setItemInHand(hand, itemstack1); diff --git a/patches/server/0203-Add-uptime-command.patch b/patches/server/0203-Add-uptime-command.patch index 16f4b92db..65811f71c 100644 --- a/patches/server/0203-Add-uptime-command.patch +++ b/patches/server/0203-Add-uptime-command.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add uptime command diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index 3156e7e43a5114aaaa1276b024f4ec45e797de88..e787ccc3c21f7e966c1e291579bf7550ee6de696 100644 +index c137f5299e4a9e2f33aeef77818c62c3805bdc0d..9e7cc8bf867b6e4f86b55e1f1d3a1cb6233c90f1 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java -@@ -208,6 +208,7 @@ public class Commands { +@@ -210,6 +210,7 @@ public class Commands { org.purpurmc.purpur.command.CreditsCommand.register(this.dispatcher); // Purpur org.purpurmc.purpur.command.DemoCommand.register(this.dispatcher); // Purpur org.purpurmc.purpur.command.PingCommand.register(this.dispatcher); // Purpur @@ -17,7 +17,7 @@ index 3156e7e43a5114aaaa1276b024f4ec45e797de88..e787ccc3c21f7e966c1e291579bf7550 } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 121bc7f3be749a1773ad917023855bae529e6643..793f72254220ab79bec4ba3c36f79309bf99cb3d 100644 +index 257226e9ac530482149058986bb81bd699b6a6ed..6f2354856052e348942cc2a42cb6f364bfccc9c6 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -294,6 +294,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop", PurpurConfig.uptimeSecond, PurpurConfig.uptimeSeconds, TimeUnit.SECONDS, TimeUnit.MILLISECONDS::toSeconds); + -+ Component output = MiniMessage.get().parse(PurpurConfig.uptimeCommandOutput, Template.of("uptime", data.format)); ++ Component output = MiniMessage.miniMessage().deserialize(PurpurConfig.uptimeCommandOutput, Placeholder.unparsed("uptime", data.format)); + sender.sendSuccess(output, false); + return 1; + } diff --git a/patches/server/0204-Structure-seed-options.patch b/patches/server/0204-Structure-seed-options.patch index 5ba2cd424..ed082204a 100644 --- a/patches/server/0204-Structure-seed-options.patch +++ b/patches/server/0204-Structure-seed-options.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Structure seed options diff --git a/src/main/java/net/minecraft/world/level/levelgen/feature/BuriedTreasureFeature.java b/src/main/java/net/minecraft/world/level/levelgen/feature/BuriedTreasureFeature.java -index c4ec2e41314da9501dc62baa024607b2782d2c73..54341db6faf66c8e84156ee3a310fd0d6561b632 100644 +index ff58437d0ccc4901c84b3df9afb245940fbffef1..e4201731cee6ffd14a00370666de8cee5d2d5872 100644 --- a/src/main/java/net/minecraft/world/level/levelgen/feature/BuriedTreasureFeature.java +++ b/src/main/java/net/minecraft/world/level/levelgen/feature/BuriedTreasureFeature.java -@@ -21,7 +21,10 @@ public class BuriedTreasureFeature extends StructureFeature context) { WorldgenRandom worldgenRandom = new WorldgenRandom(new LegacyRandomSource(0L)); @@ -36,7 +36,7 @@ index 45f11284bf65081b3b2e8da85114efbe5efd5b42..354a923350cbfc76645136858e8e9628 double d = (double)(context.config()).probability; return worldgenRandom.nextDouble() >= d ? false : context.validBiome().test(context.chunkGenerator().getNoiseBiome(QuartPos.fromBlock(context.chunkPos().getMiddleBlockX()), QuartPos.fromBlock(50), QuartPos.fromBlock(context.chunkPos().getMiddleBlockZ()))); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index dd15700d167ef169f6cfb838f8ce6517df17b605..f20736450acfb916c292068729021f57d5fbcae4 100644 +index f5a91db8035509ce42315a75205e9f0ae13ed127..4949c3bc2066e790364db631e7f801c1e83d01e9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -214,6 +214,23 @@ public class PurpurConfig { diff --git a/patches/server/0206-Store-placer-on-Block-when-placed.patch b/patches/server/0206-Store-placer-on-Block-when-placed.patch index 0af584ce0..4ac6d2270 100644 --- a/patches/server/0206-Store-placer-on-Block-when-placed.patch +++ b/patches/server/0206-Store-placer-on-Block-when-placed.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Store placer on Block when placed diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index fd8d102ac8e84c4bfe6f4431bd1088b862cff752..28b1873989293b5e5d05f04a2bacbb9f0f5e5a2b 100644 +index 84d77fee05eda89cdd37be281e771415dcfabda4..5017b30b5714a47b54a00bc9da28bf57f06a6b3f 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -382,6 +382,7 @@ public final class ItemStack { +@@ -392,6 +392,7 @@ public final class ItemStack { world.preventPoiUpdated = true; // CraftBukkit - SPIGOT-5710 for (BlockState blockstate : blocks) { blockstate.update(true, false); @@ -16,7 +16,7 @@ index fd8d102ac8e84c4bfe6f4431bd1088b862cff752..28b1873989293b5e5d05f04a2bacbb9f } world.preventPoiUpdated = false; -@@ -411,6 +412,7 @@ public final class ItemStack { +@@ -421,6 +422,7 @@ public final class ItemStack { if (!(block.getBlock() instanceof BaseEntityBlock)) { // Containers get placed automatically block.getBlock().onPlace(block, world, newblockposition, oldBlock, true, itemactioncontext); // Paper - pass itemactioncontext } @@ -25,10 +25,10 @@ index fd8d102ac8e84c4bfe6f4431bd1088b862cff752..28b1873989293b5e5d05f04a2bacbb9f world.notifyAndUpdatePhysics(newblockposition, null, oldBlock, block, world.getBlockState(newblockposition), updateFlag, 512); // send null chunk as chunk.k() returns false by this point } diff --git a/src/main/java/net/minecraft/world/level/block/Block.java b/src/main/java/net/minecraft/world/level/block/Block.java -index ab5b9f00123e2ede2931ffc520684e482aac49b4..9a4858eb3a3289d3da9c1984d94ba7244db254bf 100644 +index a80f4dc0a642c744223a155232291ace6e007636..5dede264fc3cb045b6330e35123b5b416c1b1f56 100644 --- a/src/main/java/net/minecraft/world/level/block/Block.java +++ b/src/main/java/net/minecraft/world/level/block/Block.java -@@ -436,7 +436,17 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -438,7 +438,17 @@ public class Block extends BlockBehaviour implements ItemLike { Block.dropResources(state, world, pos, blockEntity, player, stack); } diff --git a/patches/server/0207-Summoner-API.patch b/patches/server/0207-Summoner-API.patch index 0bdd5dc59..b0c214f51 100644 --- a/patches/server/0207-Summoner-API.patch +++ b/patches/server/0207-Summoner-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Summoner API 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 7d181c78b22b7ad03674df6ab7288a2215aa3708..849a2aec719c8755409668fd6a7c4899eff4f882 100644 +index df99dca1b3e2871dc365780fde52e93fb2170ef5..1f90c7e164848f08ff6c4aacf0a6154750cfe21d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java @@ -64,6 +64,7 @@ public class IronGolem extends AbstractGolem implements NeutralMob { @@ -49,7 +49,7 @@ index 7d181c78b22b7ad03674df6ab7288a2215aa3708..849a2aec719c8755409668fd6a7c4899 } 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 5695cdb6a621d24a3795220a66ea94dfa1dbba52..4a33a9a439ca7f9bdb40ea15a721a30f6028f14a 100644 +index 734b1314f148e0f92559be1dc1970613b313975f..b84376598527b7081808ee0c60fcd911c32ce7e7 100644 --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java @@ -49,6 +49,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @@ -93,10 +93,10 @@ index 5695cdb6a621d24a3795220a66ea94dfa1dbba52..4a33a9a439ca7f9bdb40ea15a721a30f } 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 d7d9500b0c10b5091910610651bcf85524b67a47..4778a33cef472b959aa645e6cd495204d3c8975f 100644 +index b947a9af4c3387aec9b7e62d5899fdae1ccfedbb..0ecd5c20b1d571ac1e147df0c854412b5c9f3741 100644 --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -@@ -86,6 +86,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -85,6 +85,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob }; private static final TargetingConditions TARGETING_CONDITIONS = TargetingConditions.forCombat().range(20.0D).selector(WitherBoss.LIVING_ENTITY_SELECTOR); private int shootCooldown = 0; // Purpur @@ -104,7 +104,7 @@ index d7d9500b0c10b5091910610651bcf85524b67a47..4778a33cef472b959aa645e6cd495204 // Paper start private boolean canPortal = false; -@@ -228,6 +229,15 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -227,6 +228,15 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob public boolean isSensitiveToWater() { return this.level.purpurConfig.witherTakeDamageFromWater; } @@ -120,7 +120,7 @@ index d7d9500b0c10b5091910610651bcf85524b67a47..4778a33cef472b959aa645e6cd495204 // Purpur end @Override -@@ -256,6 +266,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -255,6 +265,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob public void addAdditionalSaveData(CompoundTag nbt) { super.addAdditionalSaveData(nbt); nbt.putInt("Invul", this.getInvulnerableTicks()); @@ -128,7 +128,7 @@ index d7d9500b0c10b5091910610651bcf85524b67a47..4778a33cef472b959aa645e6cd495204 } @Override -@@ -265,6 +276,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -264,6 +275,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob if (this.hasCustomName()) { this.bossEvent.setName(this.getDisplayName()); } @@ -157,10 +157,10 @@ index 7a700892a997aa595ac9c9f28d6b39a35c225053..872507fe50e50429bbaa3af16f8f9d94 if (!world.addFreshEntity(entityirongolem, SpawnReason.BUILD_IRONGOLEM)) { return; diff --git a/src/main/java/net/minecraft/world/level/block/WitherSkullBlock.java b/src/main/java/net/minecraft/world/level/block/WitherSkullBlock.java -index 5be46c6f3db4848b9b88a5227d58705f40b9c16f..2b2ad683e5ac1210ab81c2f72ea05df29c8bb05c 100644 +index 03b97e9ea6059fa09bbbed7fc9ae7212f3eaa70b..25daac2b7c1cb5f8194704aa36ba04b40a4f8d21 100644 --- a/src/main/java/net/minecraft/world/level/block/WitherSkullBlock.java +++ b/src/main/java/net/minecraft/world/level/block/WitherSkullBlock.java -@@ -82,6 +82,7 @@ public class WitherSkullBlock extends SkullBlock { +@@ -81,6 +81,7 @@ public class WitherSkullBlock extends SkullBlock { entitywither.moveTo((double) blockposition1.getX() + 0.5D, (double) blockposition1.getY() + 0.55D, (double) blockposition1.getZ() + 0.5D, shapedetector_shapedetectorcollection.getForwards().getAxis() == Direction.Axis.X ? 0.0F : 90.0F, 0.0F); entitywither.yBodyRot = shapedetector_shapedetectorcollection.getForwards().getAxis() == Direction.Axis.X ? 0.0F : 90.0F; entitywither.makeInvulnerable(); diff --git a/patches/server/0208-Customizable-sleeping-actionbar-messages.patch b/patches/server/0208-Customizable-sleeping-actionbar-messages.patch index 094f3d464..f5d41b847 100644 --- a/patches/server/0208-Customizable-sleeping-actionbar-messages.patch +++ b/patches/server/0208-Customizable-sleeping-actionbar-messages.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Customizable sleeping actionbar messages diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 3cfb792fe6c55a0db9c53ebe375b33533306dd6a..4edcc0400466c6224a02af9c08ac2a04d580a1e2 100644 +index 91633d891c6a5d7c54c996240f657d47ac705a05..43bfe80596987cd80c7aa475cd168777cda8a422 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -967,11 +967,29 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -963,11 +963,29 @@ public class ServerLevel extends Level implements WorldGenLevel { if (this.canSleepThroughNights()) { if (!this.getServer().isSingleplayer() || this.getServer().isPublished()) { int i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); @@ -21,7 +21,7 @@ index 3cfb792fe6c55a0db9c53ebe375b33533306dd6a..4edcc0400466c6224a02af9c08ac2a04 + return; + } + if (!org.purpurmc.purpur.PurpurConfig.sleepSkippingNight.equalsIgnoreCase("default")) { -+ chatmessage = io.papermc.paper.adventure.PaperAdventure.asVanilla(net.kyori.adventure.text.minimessage.MiniMessage.get().parse(org.purpurmc.purpur.PurpurConfig.sleepSkippingNight)); ++ chatmessage = io.papermc.paper.adventure.PaperAdventure.asVanilla(net.kyori.adventure.text.minimessage.MiniMessage.miniMessage().deserialize(org.purpurmc.purpur.PurpurConfig.sleepSkippingNight)); + } else + // Purpur end chatmessage = new TranslatableComponent("sleep.skipping_night"); @@ -31,16 +31,16 @@ index 3cfb792fe6c55a0db9c53ebe375b33533306dd6a..4edcc0400466c6224a02af9c08ac2a04 + return; + } + if (!org.purpurmc.purpur.PurpurConfig.sleepingPlayersPercent.equalsIgnoreCase("default")) { -+ chatmessage = io.papermc.paper.adventure.PaperAdventure.asVanilla(net.kyori.adventure.text.minimessage.MiniMessage.get().parse(org.purpurmc.purpur.PurpurConfig.sleepingPlayersPercent, -+ net.kyori.adventure.text.minimessage.Template.of("count", Integer.toString(this.sleepStatus.amountSleeping())), -+ net.kyori.adventure.text.minimessage.Template.of("total", Integer.toString(this.sleepStatus.sleepersNeeded(i))))); ++ chatmessage = io.papermc.paper.adventure.PaperAdventure.asVanilla(net.kyori.adventure.text.minimessage.MiniMessage.miniMessage().deserialize(org.purpurmc.purpur.PurpurConfig.sleepingPlayersPercent, ++ net.kyori.adventure.text.minimessage.tag.resolver.Placeholder.parsed("count", Integer.toString(this.sleepStatus.amountSleeping())), ++ net.kyori.adventure.text.minimessage.tag.resolver.Placeholder.parsed("total", Integer.toString(this.sleepStatus.sleepersNeeded(i))))); + } else + // Purpur end chatmessage = new TranslatableComponent("sleep.players_sleeping", new Object[]{this.sleepStatus.amountSleeping(), this.sleepStatus.sleepersNeeded(i)}); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index f20736450acfb916c292068729021f57d5fbcae4..7c0b24c6dbd989697c7fa258f6d7f7b35f5b1d2e 100644 +index 4949c3bc2066e790364db631e7f801c1e83d01e9..d993b5dc4428ed1c156359db7efa4a4f9b449f12 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -180,6 +180,8 @@ public class PurpurConfig { diff --git a/patches/server/0211-Big-dripleaf-tilt-delay.patch b/patches/server/0211-Big-dripleaf-tilt-delay.patch index 21a0b8376..99c59f51f 100644 --- a/patches/server/0211-Big-dripleaf-tilt-delay.patch +++ b/patches/server/0211-Big-dripleaf-tilt-delay.patch @@ -11,10 +11,10 @@ PARTIAL: big_dripleaf with PARTIAL tilt will change to FULL tilt after 10 ticks UNSTABLE: big_dripleaf with FULL tilt will change back to no tilt after 100 ticks diff --git a/src/main/java/net/minecraft/world/level/block/BigDripleafBlock.java b/src/main/java/net/minecraft/world/level/block/BigDripleafBlock.java -index 3f434ac77611a81889b15c118a0fca57cc10a6bb..36d65d85d3cc030551fc0957c1ebbff66d80f244 100644 +index 45a5343c1109c63ce7864327837979282b904367..042128d6982481fedf8e6ad523cff98fae7dec28 100644 --- a/src/main/java/net/minecraft/world/level/block/BigDripleafBlock.java +++ b/src/main/java/net/minecraft/world/level/block/BigDripleafBlock.java -@@ -237,7 +237,7 @@ public class BigDripleafBlock extends HorizontalDirectionalBlock implements Bone +@@ -236,7 +236,7 @@ public class BigDripleafBlock extends HorizontalDirectionalBlock implements Bone BigDripleafBlock.playTiltSound(world, blockposition, soundeffect); } @@ -24,7 +24,7 @@ index 3f434ac77611a81889b15c118a0fca57cc10a6bb..36d65d85d3cc030551fc0957c1ebbff6 if (i != -1) { world.scheduleTick(blockposition, (Block) this, i); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 301e2afd4ed73ebcf6996a2baec52d462d972d0f..a3422a2fef4edc176f44a32061f7ca26b6b80c3e 100644 +index a755dbab717e6899d57558c7c7f0b17d40ce09fa..6960ee951bc3980c18a101e1285411e40572f9c8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -691,6 +691,22 @@ public class PurpurWorldConfig { diff --git a/patches/server/0212-Player-ridable-in-water-option.patch b/patches/server/0212-Player-ridable-in-water-option.patch index 0ca4a5ac5..b27437bfe 100644 --- a/patches/server/0212-Player-ridable-in-water-option.patch +++ b/patches/server/0212-Player-ridable-in-water-option.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Player ridable in water option 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 e4c129f0dcf61bcb5ca5f1afe7486ffe021607d5..7261cb0c281bc0aaa6f0a0cc707ac7edff80a865 100644 +index 75393ff3aafa01eaa911149d0173da28c236f7c2..302db826868980d3ad617013413632f97ab6643a 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -2015,6 +2015,11 @@ public abstract class Player extends LivingEntity { +@@ -2028,6 +2028,11 @@ public abstract class Player extends LivingEntity { return this.inventory.armor; } diff --git a/patches/server/0213-Config-to-disable-Enderman-teleport-on-projectile-hi.patch b/patches/server/0213-Config-to-disable-Enderman-teleport-on-projectile-hi.patch index 4514ccf43..bc9bec60f 100644 --- a/patches/server/0213-Config-to-disable-Enderman-teleport-on-projectile-hi.patch +++ b/patches/server/0213-Config-to-disable-Enderman-teleport-on-projectile-hi.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config to disable Enderman teleport on projectile hit 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 eb1f02840ae230f9195d72d0ece9553bf72bba3f..1426d3ab3731f849cf88ed1b5e60b694c572ad71 100644 +index 8713db4986d6db80c3422ead4f99203283e22e40..425a2cab66ce456b8e034b008d2cb82ecba62004 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -411,7 +411,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -410,7 +410,7 @@ public class EnderMan extends Monster implements NeutralMob { return false; } else if (getRider() != null && this.isControllable()) { return super.hurt(source, amount); // Purpur - no teleporting on damage } else if (org.purpurmc.purpur.PurpurConfig.endermanShortHeight && source == DamageSource.IN_WALL) { return false; // Purpur - no suffocation damage if short height @@ -18,7 +18,7 @@ index eb1f02840ae230f9195d72d0ece9553bf72bba3f..1426d3ab3731f849cf88ed1b5e60b694 boolean flag; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4d8cd5f5235b15627b10f3dabb9df65cb55a5834..00d62e7008a2faa65c11d6c8419f79c62224fd1d 100644 +index 38232e48fd7e415b2403d96c04170c18691afa1c..e213ab6708ab18568cae1387c4c0608f2f23af5c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1290,6 +1290,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0214-Add-compass-command.patch b/patches/server/0214-Add-compass-command.patch index 457e0abbd..19a35b29e 100644 --- a/patches/server/0214-Add-compass-command.patch +++ b/patches/server/0214-Add-compass-command.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add compass command diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index e787ccc3c21f7e966c1e291579bf7550ee6de696..a4ec8c35c1870810c11e81e79c3b191c4f440f35 100644 +index 9e7cc8bf867b6e4f86b55e1f1d3a1cb6233c90f1..7c30d8d61a8e82d8a1f61451090e9bbbca933d2a 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java -@@ -210,6 +210,7 @@ public class Commands { +@@ -212,6 +212,7 @@ public class Commands { org.purpurmc.purpur.command.PingCommand.register(this.dispatcher); // Purpur org.purpurmc.purpur.command.UptimeCommand.register(this.dispatcher); // Purpur org.purpurmc.purpur.command.TPSBarCommand.register(this.dispatcher); // Purpur @@ -17,10 +17,10 @@ index e787ccc3c21f7e966c1e291579bf7550ee6de696..a4ec8c35c1870810c11e81e79c3b191c if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 38a01e62ca99da9d8453b6275c5a1b22fcfa9b9e..f300589fad36c5c9768474a13db74144b760c2a5 100644 +index 96c5a7aa62703467a0325d5203ff21a8f6e3fc07..43dbd3d233a6f0f9f762fb68e81ad49b9c9e6dab 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -257,6 +257,7 @@ public class ServerPlayer extends Player { +@@ -255,6 +255,7 @@ public class ServerPlayer extends Player { public boolean purpurClient = false; // Purpur public boolean acceptingResourcePack = false; // Purpur private boolean tpsBar = false; // Purpur @@ -28,7 +28,7 @@ index 38a01e62ca99da9d8453b6275c5a1b22fcfa9b9e..f300589fad36c5c9768474a13db74144 public double lastEntitySpawnRadiusSquared; // Paper - optimise isOutsideRange, this field is in blocks public final com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet cachedSingleHashSet; // Paper -@@ -479,6 +480,7 @@ public class ServerPlayer extends Player { +@@ -477,6 +478,7 @@ public class ServerPlayer extends Player { } if (nbt.contains("Purpur.TPSBar")) { this.tpsBar = nbt.getBoolean("Purpur.TPSBar"); } // Purpur @@ -36,7 +36,7 @@ index 38a01e62ca99da9d8453b6275c5a1b22fcfa9b9e..f300589fad36c5c9768474a13db74144 } @Override -@@ -540,6 +542,7 @@ public class ServerPlayer extends Player { +@@ -538,6 +540,7 @@ public class ServerPlayer extends Player { this.getBukkitEntity().setExtraData(nbt); // CraftBukkit nbt.putBoolean("Purpur.TPSBar", this.tpsBar); // Purpur @@ -59,7 +59,7 @@ index 38a01e62ca99da9d8453b6275c5a1b22fcfa9b9e..f300589fad36c5c9768474a13db74144 // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 7c0b24c6dbd989697c7fa258f6d7f7b35f5b1d2e..f59247132b92abafc20437f958b69a7964676423 100644 +index d993b5dc4428ed1c156359db7efa4a4f9b449f12..34f098aeb69bcbd79324386f3fe6a55146fa6f70 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -265,6 +265,11 @@ public class PurpurConfig { diff --git a/patches/server/0216-Toggle-for-kinetic-damage.patch b/patches/server/0216-Toggle-for-kinetic-damage.patch index eade5e28a..6e0d58f12 100644 --- a/patches/server/0216-Toggle-for-kinetic-damage.patch +++ b/patches/server/0216-Toggle-for-kinetic-damage.patch @@ -5,22 +5,17 @@ Subject: [PATCH] Toggle for kinetic damage diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 17eb40a73e3d73e2fd24ec411c0d76ebf9ae6490..aecebe3b368c4159e64da305b3b921ae33b1e1a4 100644 +index 2773267524a58219876a84aa44b97094e155883a..360aa9d2f9d5a8ecd0db36a3715825222fec018e 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -2825,7 +2825,11 @@ public abstract class LivingEntity extends Entity { +@@ -2828,6 +2828,7 @@ public abstract class LivingEntity extends Entity { - if (f4 > 0.0F) { - this.playSound(this.getFallDamageSound((int) f4), 1.0F, 1.0F); -- this.hurt(DamageSource.FLY_INTO_WALL, f4); -+ // Purpur start -+ if (level.purpurConfig.elytraKineticDamage) { -+ this.hurt(DamageSource.FLY_INTO_WALL, f4); -+ } -+ // Purpur end + if (f3 > 0.0F) { + this.playSound(this.getFallDamageSound((int) f3), 1.0F, 1.0F); ++ if (level.purpurConfig.elytraKineticDamage) // Purpur + this.hurt(DamageSource.FLY_INTO_WALL, f3); } } - diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index b481c3bf0311058307b1fc38d68047e48c4df44d..b03142997900921e6cf4c105262ff08678e87097 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/patches/server/0218-Customizeable-Zombie-Villager-curing-times.patch b/patches/server/0218-Customizeable-Zombie-Villager-curing-times.patch index 05a4d3d39..c28864930 100644 --- a/patches/server/0218-Customizeable-Zombie-Villager-curing-times.patch +++ b/patches/server/0218-Customizeable-Zombie-Villager-curing-times.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Customizeable Zombie Villager curing times 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 92d527081abd35acc646f66a0714f2dc01706dfe..02763379210a45a83b34c6acd6cb37c536e5ba36 100644 +index ba6875089c122baaf99f21cda5c65228c78e0fa1..6c559f78cc7eab34d6109c1926067720d964d42c 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -@@ -214,7 +214,7 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { +@@ -218,7 +218,7 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { } if (!this.level.isClientSide) { diff --git a/patches/server/0219-Option-for-sponges-to-work-on-lava.patch b/patches/server/0219-Option-for-sponges-to-work-on-lava.patch index 30296e491..f19afcd39 100644 --- a/patches/server/0219-Option-for-sponges-to-work-on-lava.patch +++ b/patches/server/0219-Option-for-sponges-to-work-on-lava.patch @@ -5,20 +5,20 @@ Subject: [PATCH] Option for sponges to work on lava diff --git a/src/main/java/net/minecraft/world/level/block/SpongeBlock.java b/src/main/java/net/minecraft/world/level/block/SpongeBlock.java -index 97b4e3c0d2b1bbde77b135b8595c3bfa190a14cb..02b98cfe47d5d2f3c362a84c6b05e734c9dfd6df 100644 +index fe4fdd21ae22970ddd8c7f5cd72bdf88b9be0a20..bb05f4d5e0403f39198bff5285698a2a86010ac9 100644 --- a/src/main/java/net/minecraft/world/level/block/SpongeBlock.java +++ b/src/main/java/net/minecraft/world/level/block/SpongeBlock.java -@@ -74,7 +74,7 @@ public class SpongeBlock extends Block { +@@ -73,7 +73,7 @@ public class SpongeBlock extends Block { // CraftBukkit end Material material = iblockdata.getMaterial(); -- if (fluid.is((Tag) FluidTags.WATER)) { -+ if (fluid.is(FluidTags.WATER) || (world.purpurConfig.spongeAbsorbsLava && fluid.is(FluidTags.LAVA))) { +- if (fluid.is(FluidTags.WATER)) { ++ if (fluid.is(FluidTags.WATER) || (world.purpurConfig.spongeAbsorbsLava && fluid.is(FluidTags.LAVA))) { // Purpur if (iblockdata.getBlock() instanceof BucketPickup && !((BucketPickup) iblockdata.getBlock()).pickupBlock(blockList, blockposition2, iblockdata).isEmpty()) { // CraftBukkit ++i; if (j < world.purpurConfig.spongeAbsorptionRadius) { // Purpur diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 56e0b447409edf09bd495fa48f64ef0ff2b67ed6..7e94407fa58ae86f48b27a3bbe2c04e33eebecf9 100644 +index 2b7d4eeda3244e32c19385dd81531cffc9b1a1d4..1bb12a3b52c997fa6d44f98ab73552ffaf87c595 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -900,9 +900,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0220-Toggle-for-Wither-s-spawn-sound.patch b/patches/server/0220-Toggle-for-Wither-s-spawn-sound.patch index 0fc5c9daf..363aad761 100644 --- a/patches/server/0220-Toggle-for-Wither-s-spawn-sound.patch +++ b/patches/server/0220-Toggle-for-Wither-s-spawn-sound.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Toggle for Wither's spawn sound 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 4778a33cef472b959aa645e6cd495204d3c8975f..e30d8bfb4269e872c20a9bf91348dd3685a9332c 100644 +index 0ecd5c20b1d571ac1e147df0c854412b5c9f3741..3e8f13020f56ce232518a6520d16e90744217938 100644 --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -@@ -419,7 +419,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -418,7 +418,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob } // CraftBukkit end diff --git a/patches/server/0221-Cactus-breaks-from-solid-neighbors-config.patch b/patches/server/0221-Cactus-breaks-from-solid-neighbors-config.patch index 51c1a8eff..77004f861 100644 --- a/patches/server/0221-Cactus-breaks-from-solid-neighbors-config.patch +++ b/patches/server/0221-Cactus-breaks-from-solid-neighbors-config.patch @@ -5,20 +5,20 @@ Subject: [PATCH] Cactus breaks from solid neighbors config diff --git a/src/main/java/net/minecraft/world/level/block/CactusBlock.java b/src/main/java/net/minecraft/world/level/block/CactusBlock.java -index fa36ad3bb63764778aa7201d90e331e64292c7b4..dfa06b3c7323aeb12b1e234ca27c924a4c2e8856 100644 +index 4323e5cc2054804243e8e2f24fd5447280f218de..13e7f1c70e74577a5db84a37d6299204a0384c40 100644 --- a/src/main/java/net/minecraft/world/level/block/CactusBlock.java +++ b/src/main/java/net/minecraft/world/level/block/CactusBlock.java -@@ -110,7 +110,7 @@ public class CactusBlock extends Block { +@@ -109,7 +109,7 @@ public class CactusBlock extends Block { BlockState iblockdata2 = world.getBlockState(pos.relative(enumdirection)); material = iblockdata2.getMaterial(); -- } while (!material.isSolid() && !world.getFluidState(pos.relative(enumdirection)).is((Tag) FluidTags.LAVA)); -+ } while ((!world.getWorldBorder().world.purpurConfig.cactusBreaksFromSolidNeighbors || !material.isSolid()) && !world.getFluidState(pos.relative(enumdirection)).is((Tag) FluidTags.LAVA)); // Purpur +- } while (!material.isSolid() && !world.getFluidState(pos.relative(enumdirection)).is(FluidTags.LAVA)); ++ } while ((!world.getWorldBorder().world.purpurConfig.cactusBreaksFromSolidNeighbors || !material.isSolid()) && !world.getFluidState(pos.relative(enumdirection)).is(FluidTags.LAVA)); // Purpur return false; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 09eda8b4da4e4a51277e71f53ae5db855b2d7f04..bb56401a3eea8046ed45c73dcd4d0638455955b5 100644 +index 3e14e9ca693cd1649514e84f32951bf70e18863a..347b0ffe2bb47a08d781f9e0e970005b33138960 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -723,6 +723,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0223-Conduit-behavior-configuration.patch b/patches/server/0223-Conduit-behavior-configuration.patch index d63f2ff0d..5b611adef 100644 --- a/patches/server/0223-Conduit-behavior-configuration.patch +++ b/patches/server/0223-Conduit-behavior-configuration.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Conduit behavior configuration diff --git a/src/main/java/net/minecraft/world/level/block/entity/ConduitBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/ConduitBlockEntity.java -index 96b6e914441ee1faa059aa5ddcf77ffb74e76ae9..31af7d8111e73169d3e02aa52799a01838ecd9c6 100644 +index b7ec481bb9159bb203ff1688dd7f6b9f9199bccc..5d23659fd7b2507525f315d5cc808aa0ab5baaac 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/ConduitBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/ConduitBlockEntity.java -@@ -173,7 +173,7 @@ public class ConduitBlockEntity extends BlockEntity { +@@ -172,7 +172,7 @@ public class ConduitBlockEntity extends BlockEntity { if ((l > 1 || i1 > 1 || j1 > 1) && (i == 0 && (i1 == 2 || j1 == 2) || j == 0 && (l == 2 || j1 == 2) || k == 0 && (l == 2 || i1 == 2))) { BlockPos blockposition2 = pos.offset(i, j, k); BlockState iblockdata = world.getBlockState(blockposition2); @@ -17,7 +17,7 @@ index 96b6e914441ee1faa059aa5ddcf77ffb74e76ae9..31af7d8111e73169d3e02aa52799a018 int k1 = ablock.length; for (int l1 = 0; l1 < k1; ++l1) { -@@ -193,7 +193,7 @@ public class ConduitBlockEntity extends BlockEntity { +@@ -192,7 +192,7 @@ public class ConduitBlockEntity extends BlockEntity { private static void applyEffects(Level world, BlockPos pos, List activatingBlocks) { int i = activatingBlocks.size(); @@ -26,12 +26,12 @@ index 96b6e914441ee1faa059aa5ddcf77ffb74e76ae9..31af7d8111e73169d3e02aa52799a018 int k = pos.getX(); int l = pos.getY(); int i1 = pos.getZ(); -@@ -231,14 +231,14 @@ public class ConduitBlockEntity extends BlockEntity { +@@ -230,14 +230,14 @@ public class ConduitBlockEntity extends BlockEntity { if (!list1.isEmpty()) { blockEntity.destroyTarget = (LivingEntity) list1.get(world.random.nextInt(list1.size())); } -- } else if (!blockEntity.destroyTarget.isAlive() || !pos.closerThan((Vec3i) blockEntity.destroyTarget.blockPosition(), 8.0D)) { -+ } else if (!blockEntity.destroyTarget.isAlive() || !pos.closerThan((Vec3i) blockEntity.destroyTarget.blockPosition(), world.purpurConfig.conduitDamageDistance)) { // Purpur +- } else if (!blockEntity.destroyTarget.isAlive() || !pos.closerThan(blockEntity.destroyTarget.blockPosition(), 8.0D)) { ++ } else if (!blockEntity.destroyTarget.isAlive() || !pos.closerThan(blockEntity.destroyTarget.blockPosition(), world.purpurConfig.conduitDamageDistance)) { // Purpur blockEntity.destroyTarget = null; } diff --git a/patches/server/0228-Added-the-ability-to-add-combustible-items.patch b/patches/server/0228-Added-the-ability-to-add-combustible-items.patch index b86c4d17d..92fbfed3f 100644 --- a/patches/server/0228-Added-the-ability-to-add-combustible-items.patch +++ b/patches/server/0228-Added-the-ability-to-add-combustible-items.patch @@ -24,10 +24,10 @@ index 4adfc26062b322443828e94e6b0943884a18846b..0d9ecca25bff63f3428ccf93e2789fca } else if (this.isFuel(itemstack1)) { if (!this.moveItemStackTo(itemstack1, 1, 2, false)) { diff --git a/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java -index 0a78f9171bd3413e644046d6467063191ac04d81..ac91a2e4cdbadebf53f15225ec93919a89160d5c 100644 +index 99c207457ec9d1a1b7d9e7becfcc8aae383e93ae..158945281178c80495f1dc2125ea21a2cd6eeb90 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java -@@ -205,6 +205,22 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit +@@ -207,6 +207,22 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit // Paper end } @@ -51,10 +51,10 @@ index 0a78f9171bd3413e644046d6467063191ac04d81..ac91a2e4cdbadebf53f15225ec93919a private int maxStack = MAX_STACK; public List transaction = new java.util.ArrayList(); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 6cffa3be376bc0286dc58e4df4f4fd2d487abf01..b1058eb25893f22eb535db8d8e6d82a20176e6d0 100644 +index 4eb628e3102d16a63a586fadb83af28ccef5cbcb..9eeda0574d05a8ae916de2272f62e8846201361e 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1427,6 +1427,19 @@ public final class CraftServer implements Server { +@@ -1420,6 +1420,19 @@ public final class CraftServer implements Server { return true; } diff --git a/patches/server/0229-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch b/patches/server/0229-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch index 1d70325d7..945ee32e9 100644 --- a/patches/server/0229-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch +++ b/patches/server/0229-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Option for if rain and thunder should stop on sleep diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index c35100c0bc1b2e57679ab8ce2ff8bc24888d06b5..79371c88f3f5a392cce7c8306a9d2772919a8863 100644 +index 43bfe80596987cd80c7aa475cd168777cda8a422..1bc17912d2cdfb1af4584dd95d0a6c7a87b31b41 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1128,6 +1128,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1124,6 +1124,7 @@ public class ServerLevel extends Level implements WorldGenLevel { private void resetWeatherCycle() { // CraftBukkit start @@ -16,7 +16,7 @@ index c35100c0bc1b2e57679ab8ce2ff8bc24888d06b5..79371c88f3f5a392cce7c8306a9d2772 this.serverLevelData.setRaining(false, org.bukkit.event.weather.WeatherChangeEvent.Cause.SLEEP); // Paper - when passing the night // If we stop due to everyone sleeping we should reset the weather duration to some other random value. // Not that everyone ever manages to get the whole server to sleep at the same time.... -@@ -1135,6 +1136,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1131,6 +1132,7 @@ public class ServerLevel extends Level implements WorldGenLevel { this.serverLevelData.setRainTime(0); } // CraftBukkit end diff --git a/patches/server/0231-Shift-right-click-to-use-exp-for-mending.patch b/patches/server/0231-Shift-right-click-to-use-exp-for-mending.patch index 70d93120b..250812191 100644 --- a/patches/server/0231-Shift-right-click-to-use-exp-for-mending.patch +++ b/patches/server/0231-Shift-right-click-to-use-exp-for-mending.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Shift right click to use exp for mending diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -index 7b09735818f027aced43158978bc54795618b64b..29329381ee67a409ed6b324c8c1f0d7ae05970da 100644 +index c42e6e74075f9513d3b3f2006fb5117743289516..1c4fe18c814a48997f5fd4cf07b796cde9838188 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -@@ -526,6 +526,7 @@ public class ServerPlayerGameMode { +@@ -536,6 +536,7 @@ public class ServerPlayerGameMode { public InteractionHand interactHand; public ItemStack interactItemStack; public InteractionResult useItemOn(ServerPlayer player, Level world, ItemStack stack, InteractionHand hand, BlockHitResult hitResult) { @@ -16,7 +16,7 @@ index 7b09735818f027aced43158978bc54795618b64b..29329381ee67a409ed6b324c8c1f0d7a BlockPos blockposition = hitResult.getBlockPos(); BlockState iblockdata = world.getBlockState(blockposition); InteractionResult enuminteractionresult = InteractionResult.PASS; -@@ -619,4 +620,18 @@ public class ServerPlayerGameMode { +@@ -629,4 +630,18 @@ public class ServerPlayerGameMode { public void setLevel(ServerLevel world) { this.level = world; } @@ -36,10 +36,10 @@ index 7b09735818f027aced43158978bc54795618b64b..29329381ee67a409ed6b324c8c1f0d7a + // Purpur end } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 5d95ff124cfccb3d95e149a5e7cc63bef03ca471..84de797d405b55cd82d2c9068b924e7fd450e996 100644 +index 7837ee997457e0e6f9c8ef0d0635c04b0c19bf6a..2f5dd732860059bbfb084733153cb013ea89668c 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1962,6 +1962,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -1970,6 +1970,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser boolean cancelled; if (movingobjectposition == null || movingobjectposition.getType() != HitResult.Type.BLOCK) { diff --git a/patches/server/0232-Dolphins-naturally-aggressive-to-players-chance.patch b/patches/server/0232-Dolphins-naturally-aggressive-to-players-chance.patch index 5058f7057..49915b428 100644 --- a/patches/server/0232-Dolphins-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0232-Dolphins-naturally-aggressive-to-players-chance.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Dolphins naturally aggressive to players chance 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 3873fe82ec05f84efadd28ee9f48831b95405de2..7e424c7674e6e8f1db42bbdfbb230174f885a07d 100644 +index 3cc3539f0664eeb048290f4d9b229a5d674fff3c..ce86a56da5aaf65a34352eab1da20e4340175248 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java -@@ -81,6 +81,7 @@ public class Dolphin extends WaterAnimal { +@@ -79,6 +79,7 @@ public class Dolphin extends WaterAnimal { return !entityitem.hasPickUpDelay() && entityitem.isAlive() && entityitem.isInWater(); }; private int spitCooldown; // Purpur @@ -16,7 +16,7 @@ index 3873fe82ec05f84efadd28ee9f48831b95405de2..7e424c7674e6e8f1db42bbdfbb230174 public Dolphin(EntityType type, Level world) { super(type, world); -@@ -176,6 +177,7 @@ public class Dolphin extends WaterAnimal { +@@ -174,6 +175,7 @@ public class Dolphin extends WaterAnimal { public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData, @Nullable CompoundTag entityNbt) { this.setAirSupply(this.getMaxAirSupply()); this.setXRot(0.0F); @@ -24,7 +24,7 @@ index 3873fe82ec05f84efadd28ee9f48831b95405de2..7e424c7674e6e8f1db42bbdfbb230174 return super.finalizeSpawn(world, difficulty, spawnReason, entityData, entityNbt); } -@@ -246,18 +248,20 @@ public class Dolphin extends WaterAnimal { +@@ -244,18 +246,20 @@ public class Dolphin extends WaterAnimal { this.goalSelector.addGoal(0, new BreathAirGoal(this)); this.goalSelector.addGoal(0, new TryFindWaterGoal(this)); this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur @@ -47,7 +47,7 @@ index 3873fe82ec05f84efadd28ee9f48831b95405de2..7e424c7674e6e8f1db42bbdfbb230174 public static AttributeSupplier.Builder createAttributes() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a7321bd88a4721b348cff6c52d4dcf31d27065d3..002fb98018873d8377ff81997947c5daf85201b0 100644 +index 27662839ca797f13296bcad00575991be3fa646c..2fdd689519f4610d9845632a88807aad1093d2ed 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1196,6 +1196,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0234-Option-for-beds-to-explode-on-villager-sleep.patch b/patches/server/0234-Option-for-beds-to-explode-on-villager-sleep.patch index 6a2689e09..0ca1318fd 100644 --- a/patches/server/0234-Option-for-beds-to-explode-on-villager-sleep.patch +++ b/patches/server/0234-Option-for-beds-to-explode-on-villager-sleep.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Option for beds to explode on villager sleep 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 21f9384b647264c72675889fdda2613031a57c5d..6930429c5ac77768d4ef7ad2dc38778b475a8bd4 100644 +index f810e1d00c084e9a1edaa367752c040032a58d75..8a4a18e87f5770addf4316ab9262895780396ba5 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -1174,6 +1174,12 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -1176,6 +1176,12 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @Override public void startSleeping(BlockPos pos) { @@ -22,7 +22,7 @@ index 21f9384b647264c72675889fdda2613031a57c5d..6930429c5ac77768d4ef7ad2dc38778b this.brain.setMemory(MemoryModuleType.LAST_SLEPT, this.level.getGameTime()); // CraftBukkit - decompile error this.brain.eraseMemory(MemoryModuleType.WALK_TARGET); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f5a03a25b5e90c9f42795923da83841be27dc6ee..588c0beee5a48757f3d98774b06bddca4741855c 100644 +index 164a5485500a59008fda77e2d5e890e952ec4830..8f89e57f08570f5c93b7b764c60ae6180a1fd096 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -702,11 +702,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0235-Halloween-options-and-optimizations.patch b/patches/server/0235-Halloween-options-and-optimizations.patch index 95601dbd7..f67e9ba20 100644 --- a/patches/server/0235-Halloween-options-and-optimizations.patch +++ b/patches/server/0235-Halloween-options-and-optimizations.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Halloween options and optimizations diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -index f6b289cea5962ef56e5c9daa1122989bbabde00e..062b99e9586199454c3948d37aa66f866b8b644d 100644 +index d4dde82e28200df974b5a084f2d3d7780d8da1bf..4d39f68a0d0de84474ef96f10cb35e97db2fd9f8 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -@@ -317,7 +317,7 @@ public class Bat extends AmbientCreature { +@@ -316,7 +316,7 @@ public class Bat extends AmbientCreature { int i = world.getMaxLocalRawBrightness(pos); byte b0 = 4; @@ -17,7 +17,7 @@ index f6b289cea5962ef56e5c9daa1122989bbabde00e..062b99e9586199454c3948d37aa66f86 b0 = 7; } else if (random.nextBoolean()) { return false; -@@ -331,6 +331,7 @@ public class Bat extends AmbientCreature { +@@ -330,6 +330,7 @@ public class Bat extends AmbientCreature { private static boolean isSpookySeason = false; private static final int ONE_HOUR = 20 * 60 * 60; private static int lastSpookyCheck = -ONE_HOUR; @@ -43,7 +43,7 @@ index 193622015c6d3dbff787061e13fa098a287bce0c..1c48ac2f0b6cfee952ce5e76d7d88603 this.armorDropChances[EquipmentSlot.HEAD.getIndex()] = 0.0F; } 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 e4e357af439c9a02b8013ce3349ff582495ee80e..dd879f7f879d42546e84cb2eebcea7c2f6acf8cd 100644 +index 695ff6b65114a2aea761e55d61bea6d49d804f2e..53513758072a117e2938ba9735b99247abf874d8 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -575,11 +575,7 @@ public class Zombie extends Monster { @@ -60,7 +60,7 @@ index e4e357af439c9a02b8013ce3349ff582495ee80e..dd879f7f879d42546e84cb2eebcea7c2 this.armorDropChances[EquipmentSlot.HEAD.getIndex()] = 0.0F; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 588c0beee5a48757f3d98774b06bddca4741855c..d8bb4d769f5e8ef8fa7d7a38a7cf07c1bf319faf 100644 +index 8f89e57f08570f5c93b7b764c60ae6180a1fd096..06f7a566d0f47a4f3345f9348869e2bd841db2a7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1525,6 +1525,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0237-UPnP-Port-Forwarding.patch b/patches/server/0237-UPnP-Port-Forwarding.patch index eabaece43..c95d39004 100644 --- a/patches/server/0237-UPnP-Port-Forwarding.patch +++ b/patches/server/0237-UPnP-Port-Forwarding.patch @@ -5,7 +5,7 @@ Subject: [PATCH] UPnP Port Forwarding diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 17ed8641afb59c11868c1c36ab83c88221a1e660..3dc6dc5a17ab2d8b93bf38b63da8fd55bdcd11da 100644 +index 6f2354856052e348942cc2a42cb6f364bfccc9c6..13f7389e9d26940e7a6ffcdc2c266b26cd5c7319 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -309,6 +309,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { @@ -67,7 +67,7 @@ index 9a4858eb3a3289d3da9c1984d94ba7244db254bf..caff1d4ae9f7c2fe7faf1305b1e60528 }); state.spawnAfterBreak((ServerLevel) world, pos, ItemStack.EMPTY); } -@@ -339,7 +343,7 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -341,7 +345,7 @@ public class Block extends BlockBehaviour implements ItemLike { io.papermc.paper.event.block.BlockBreakBlockEvent event = new io.papermc.paper.event.block.BlockBreakBlockEvent(org.bukkit.craftbukkit.block.CraftBlock.at(world, pos), org.bukkit.craftbukkit.block.CraftBlock.at(world, source), items); event.callEvent(); for (var drop : event.getDrops()) { @@ -76,7 +76,7 @@ index 9a4858eb3a3289d3da9c1984d94ba7244db254bf..caff1d4ae9f7c2fe7faf1305b1e60528 } state.spawnAfterBreak(world.getMinecraftWorld(), pos, ItemStack.EMPTY); } -@@ -350,13 +354,53 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -352,13 +356,53 @@ public class Block extends BlockBehaviour implements ItemLike { public static void dropResources(BlockState state, Level world, BlockPos pos, @Nullable BlockEntity blockEntity, Entity entity, ItemStack stack) { if (world instanceof ServerLevel) { Block.getDrops(state, (ServerLevel) world, pos, blockEntity, entity, stack).forEach((itemstack1) -> { @@ -132,10 +132,10 @@ index 9a4858eb3a3289d3da9c1984d94ba7244db254bf..caff1d4ae9f7c2fe7faf1305b1e60528 float f = EntityType.ITEM.getHeight() / 2.0F; // Paper start - don't convert potentially massive numbers to floats diff --git a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java -index 5601d0c2fe635a2a4f073c333531e1a8adf1833c..9e7d2fbdfa89736807d2025a5814ddd83122ad5e 100644 +index 905ec2917fe1e5ef08b8a930afb0c0d8432fa444..9cd7a1100783c602055c29ac59027ffadcd87640 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java -@@ -5,6 +5,8 @@ import net.minecraft.CrashReportCategory; +@@ -6,6 +6,8 @@ import net.minecraft.CrashReportCategory; import net.minecraft.core.BlockPos; import net.minecraft.core.Registry; import net.minecraft.nbt.CompoundTag; diff --git a/patches/server/0242-Signs-allow-color-codes.patch b/patches/server/0242-Signs-allow-color-codes.patch index 2b9d2c997..c0ba0566d 100644 --- a/patches/server/0242-Signs-allow-color-codes.patch +++ b/patches/server/0242-Signs-allow-color-codes.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Signs allow color codes diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index f300589fad36c5c9768474a13db74144b760c2a5..61b0b0a847042557d7b9cd20f0ad51f0ff1751b8 100644 +index 43dbd3d233a6f0f9f762fb68e81ad49b9c9e6dab..e217120cdfb35a631b488b784caeba14afd411c4 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1496,6 +1496,7 @@ public class ServerPlayer extends Player { +@@ -1494,6 +1494,7 @@ public class ServerPlayer extends Player { @Override public void openTextEdit(SignBlockEntity sign) { @@ -17,10 +17,10 @@ index f300589fad36c5c9768474a13db74144b760c2a5..61b0b0a847042557d7b9cd20f0ad51f0 this.connection.send(new ClientboundBlockUpdatePacket(this.level, sign.getBlockPos())); this.connection.send(new ClientboundOpenSignEditorPacket(sign.getBlockPos())); diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 84de797d405b55cd82d2c9068b924e7fd450e996..058c45ee30e687165d837980f7aed229475a4ea3 100644 +index 2f5dd732860059bbfb084733153cb013ea89668c..0575f1bb9377ed8d58742db79efa13b639bab229 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -3163,11 +3163,15 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -3180,11 +3180,15 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser } // Paper end diff --git a/patches/server/0244-Mobs-always-drop-experience.patch b/patches/server/0244-Mobs-always-drop-experience.patch index c1ca2dec1..e69a6e67e 100644 --- a/patches/server/0244-Mobs-always-drop-experience.patch +++ b/patches/server/0244-Mobs-always-drop-experience.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Mobs always drop experience diff --git a/src/main/java/net/minecraft/world/entity/GlowSquid.java b/src/main/java/net/minecraft/world/entity/GlowSquid.java -index 32211dfd76c03d1eb59929b93eb69cc6adde81ac..7b0afbfaaddf19997d5282473e8c1c60339dd201 100644 +index e98176b7969589897ee784bfb83f6c3f40cecd68..5e5eaf7c20c3329f2e576c8672a6be918ab16d88 100644 --- a/src/main/java/net/minecraft/world/entity/GlowSquid.java +++ b/src/main/java/net/minecraft/world/entity/GlowSquid.java @@ -53,6 +53,11 @@ public class GlowSquid extends Squid { @@ -21,10 +21,10 @@ index 32211dfd76c03d1eb59929b93eb69cc6adde81ac..7b0afbfaaddf19997d5282473e8c1c60 @Override diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -index 062b99e9586199454c3948d37aa66f866b8b644d..9f8153496f173de6b8ee26ae765255a1ba2b3073 100644 +index 4d39f68a0d0de84474ef96f10cb35e97db2fd9f8..30ecad8a2530c2f4eb0ff0ae43f22d3805baa6a6 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -@@ -108,6 +108,11 @@ public class Bat extends AmbientCreature { +@@ -107,6 +107,11 @@ public class Bat extends AmbientCreature { public boolean isSensitiveToWater() { return this.level.purpurConfig.batTakeDamageFromWater; } @@ -37,10 +37,10 @@ index 062b99e9586199454c3948d37aa66f866b8b644d..9f8153496f173de6b8ee26ae765255a1 @Override 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 c69d0cc9ed74e4e06465aebff07b6b50c227fb28..e2a3a3e2722c7c5fae232ce30538ccb5fa663b7d 100644 +index ca7225e80e1612120ac9b197e0188a06df8049a7..02fc6bb52419b75f04092b33e15e0ab1ea7a7b1a 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java -@@ -230,6 +230,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -228,6 +228,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { public boolean isSensitiveToWater() { return this.level.purpurConfig.beeTakeDamageFromWater; } @@ -53,10 +53,10 @@ index c69d0cc9ed74e4e06465aebff07b6b50c227fb28..e2a3a3e2722c7c5fae232ce30538ccb5 @Override 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 5759ff40254ff7238e7b874822f743fbf0d33e81..94d5c14b777d8fd822b501b297acedf58cc56937 100644 +index 8d49f4c9d5d9a0f4dc4a1c1dcdcc7bfc678d8de3..108c8b0d25ae9432a54b9bca4cae7297f303ca81 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cat.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java -@@ -160,6 +160,11 @@ public class Cat extends TamableAnimal { +@@ -162,6 +162,11 @@ public class Cat extends TamableAnimal { public boolean isSensitiveToWater() { return this.level.purpurConfig.catTakeDamageFromWater; } @@ -69,7 +69,7 @@ index 5759ff40254ff7238e7b874822f743fbf0d33e81..94d5c14b777d8fd822b501b297acedf5 public ResourceLocation getResourceLocation() { 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 e00f65973622b476e27ae7de5fa8dc8c42ef4af7..01b2c874f209969a15acbe617260395f3df1dd0b 100644 +index d7ddb71ae59ab0a0e10717e5c678ef5e5476aba4..d4b2e6715479c485258fdec9497a0da40e5df3ef 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Chicken.java +++ b/src/main/java/net/minecraft/world/entity/animal/Chicken.java @@ -85,6 +85,11 @@ public class Chicken extends Animal { @@ -117,10 +117,10 @@ index 90e48fed68fab8e5e9f43bbeffd3a42a2ee51807..1c112e79a97648219022dc4586bfa520 @Override 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 7e424c7674e6e8f1db42bbdfbb230174f885a07d..c809ea41cf585f4adba1772043626a462f280c9a 100644 +index ce86a56da5aaf65a34352eab1da20e4340175248..55ea2944582ae12bfdf188a8cdc2285e4b60499e 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java -@@ -170,6 +170,11 @@ public class Dolphin extends WaterAnimal { +@@ -168,6 +168,11 @@ public class Dolphin extends WaterAnimal { public boolean isSensitiveToWater() { return this.level.purpurConfig.dolphinTakeDamageFromWater; } @@ -133,10 +133,10 @@ index 7e424c7674e6e8f1db42bbdfbb230174f885a07d..c809ea41cf585f4adba1772043626a46 @Nullable 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 8cdae4fb31b517015e6b154a68b2c37fe76fa127..0d3528f24b4184f7553bd1b91279f3a014a47601 100644 +index d0e9f326e755f1e9e8a9f96f9effba5f80faab1e..1b4d3722e3c2218e8712f4275392f517369d5417 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java -@@ -192,6 +192,11 @@ public class Fox extends Animal { +@@ -193,6 +193,11 @@ public class Fox extends Animal { public boolean isSensitiveToWater() { return this.level.purpurConfig.foxTakeDamageFromWater; } @@ -149,7 +149,7 @@ index 8cdae4fb31b517015e6b154a68b2c37fe76fa127..0d3528f24b4184f7553bd1b91279f3a0 @Override 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 c7ac716958900ccbd03fda080147de5332596a64..add29f2da31ff2fe6f531e78a0b49a9aa1ae8452 100644 +index 1f90c7e164848f08ff6c4aacf0a6154750cfe21d..5a74ef4baf5e22921fe54cc65e492b3b1c4d40d6 100644 --- a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java @@ -105,6 +105,11 @@ public class IronGolem extends AbstractGolem implements NeutralMob { @@ -165,10 +165,10 @@ index c7ac716958900ccbd03fda080147de5332596a64..add29f2da31ff2fe6f531e78a0b49a9a @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index 4cfba039e940d8354a04a5ba761a5c0e10e695a3..00cfd89f175206b3bb29d3a954f8564077a7115b 100644 +index 047404f4e38b9d796ceecb4e07740942eb137ae0..48459f6c9a9d7112ef335725e1989883a892c9d7 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -@@ -95,6 +95,11 @@ public class MushroomCow extends Cow implements Shearable { +@@ -94,6 +94,11 @@ public class MushroomCow extends Cow implements Shearable { public boolean isSensitiveToWater() { return this.level.purpurConfig.mooshroomTakeDamageFromWater; } @@ -181,10 +181,10 @@ index 4cfba039e940d8354a04a5ba761a5c0e10e695a3..00cfd89f175206b3bb29d3a954f85640 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java -index 23a7b7c259f00ca44616af2e97a360a63cb55120..7e32d81e451442b3e90817ef402446dcd2c706dd 100644 +index 5442baf10ca180b104bf1fd9cbcc12bb7a6146fc..3bfa7ed23d659899cccad5eb4caad6997ae2b419 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java -@@ -99,6 +99,11 @@ public class Ocelot extends Animal { +@@ -98,6 +98,11 @@ public class Ocelot extends Animal { public boolean isSensitiveToWater() { return this.level.purpurConfig.ocelotTakeDamageFromWater; } @@ -197,7 +197,7 @@ index 23a7b7c259f00ca44616af2e97a360a63cb55120..7e32d81e451442b3e90817ef402446dc public boolean isTrusting() { diff --git a/src/main/java/net/minecraft/world/entity/animal/Panda.java b/src/main/java/net/minecraft/world/entity/animal/Panda.java -index 44302e7f86c45fb10dd9770e214e66512328d821..821f6bd8a672f375ae14b9117e7b4ba96e2591dd 100644 +index 538d52c49ec35653ace723e25adf40217c7ed775..519adb77d5dc63ce8d1048c97caa7ebe2c6572ce 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Panda.java +++ b/src/main/java/net/minecraft/world/entity/animal/Panda.java @@ -147,6 +147,11 @@ public class Panda extends Animal { @@ -213,10 +213,10 @@ index 44302e7f86c45fb10dd9770e214e66512328d821..821f6bd8a672f375ae14b9117e7b4ba9 @Override 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 d68bb48cf703a3ed0bf843d5c0ab9caad4727214..8f2a2a4af0725d1436514108c7200c92effa12a9 100644 +index 661d8ce472a5f57107035ec32158aea30e1d181b..b10fc35fca9b1ef5f3cd4b622293d0410bf4e595 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -@@ -201,6 +201,11 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { +@@ -199,6 +199,11 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { public boolean isSensitiveToWater() { return this.level.purpurConfig.parrotTakeDamageFromWater; } @@ -229,7 +229,7 @@ index d68bb48cf703a3ed0bf843d5c0ab9caad4727214..8f2a2a4af0725d1436514108c7200c92 @Nullable 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 479570e9f98404ac01ef08ce81ef200340cea602..333989ee2a52bd4f1a55ecebce4f657905d3d767 100644 +index a24dffe25615c9c9a4b641b291ce735e3f1dd6b7..91a0737ac4edf457d4bda604d30341954df283ca 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Pig.java +++ b/src/main/java/net/minecraft/world/entity/animal/Pig.java @@ -94,6 +94,11 @@ public class Pig extends Animal implements ItemSteerable, Saddleable { @@ -245,10 +245,10 @@ index 479570e9f98404ac01ef08ce81ef200340cea602..333989ee2a52bd4f1a55ecebce4f6579 @Override 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 753642045e2594d67887a766a8b6c477767a6edb..2632adf6c6a7eac0387d0838b7e5f04a8971f7aa 100644 +index 3fe05be69cada8df7553ee0fb9828e5ec593f54f..368306ea53daea82abe95e9d6c61ca25c7f7cca5 100644 --- a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java +++ b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java -@@ -130,6 +130,11 @@ public class PolarBear extends Animal implements NeutralMob { +@@ -128,6 +128,11 @@ public class PolarBear extends Animal implements NeutralMob { public boolean isSensitiveToWater() { return this.level.purpurConfig.polarBearTakeDamageFromWater; } @@ -261,7 +261,7 @@ index 753642045e2594d67887a766a8b6c477767a6edb..2632adf6c6a7eac0387d0838b7e5f04a @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/Pufferfish.java b/src/main/java/net/minecraft/world/entity/animal/Pufferfish.java -index 413f2491aad79409f4ac0759f7b649f1367376a5..59186e53cabefba3da4ed7356f8bf6e390da8e36 100644 +index 2a9af6af653dc62c99baff01ebea8ad64ff62fe0..bf9e6b6ca2b2bf8b2a2e96d10cd4fda9c59df1b8 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Pufferfish.java +++ b/src/main/java/net/minecraft/world/entity/animal/Pufferfish.java @@ -70,6 +70,11 @@ public class Pufferfish extends AbstractFish { @@ -277,10 +277,10 @@ index 413f2491aad79409f4ac0759f7b649f1367376a5..59186e53cabefba3da4ed7356f8bf6e3 @Override 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 b3c258b2e46433645b706b5a43012094f584abe0..a1e19e1acdecbab1b1c955617b800cdf493fd507 100644 +index dba2e1d677d7ac26517736cfbe2ee9d742fa4482..38e75142bbd2c28254a4634b852ca8eb5890758e 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java +++ b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java -@@ -150,6 +150,11 @@ public class Rabbit extends Animal { +@@ -151,6 +151,11 @@ public class Rabbit extends Animal { public boolean isSensitiveToWater() { return this.level.purpurConfig.rabbitTakeDamageFromWater; } @@ -325,7 +325,7 @@ index 4fa8e4a298a98b2a41ef7572d21ed50aa06e2c7e..17d1a0b43b2d155535cf2483af4ba9dd @Override 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 4a33a9a439ca7f9bdb40ea15a721a30f6028f14a..2396c175433fdfe23b0db0e3303d82c34309a540 100644 +index b84376598527b7081808ee0c60fcd911c32ce7e7..83906fbb59d678451f93e6335aa674a7ff6bc9b1 100644 --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java @@ -84,6 +84,11 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @@ -341,10 +341,10 @@ index 4a33a9a439ca7f9bdb40ea15a721a30f6028f14a..2396c175433fdfe23b0db0e3303d82c3 @Override 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 49c043efc3f88ea9c5339e5011de80d2d42906c5..5c68c5992a2f52eef71fff4018f70fe4d74fa8fb 100644 +index 7a8f8be052dc3ee6dc56dd39017e11488af0a8ff..21f5304e01e0844f1bbf3e1b2f9d50c01f8bf8fd 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java -@@ -101,6 +101,11 @@ public class Squid extends WaterAnimal { +@@ -100,6 +100,11 @@ public class Squid extends WaterAnimal { public boolean isSensitiveToWater() { return this.level.purpurConfig.squidTakeDamageFromWater; } @@ -357,10 +357,10 @@ index 49c043efc3f88ea9c5339e5011de80d2d42906c5..5c68c5992a2f52eef71fff4018f70fe4 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java -index 5b8a6b2705c6f317e4e48e7a9183b140489c355a..9585b8a3d6d0777df3fb4debfd9d7a776b035bad 100644 +index 206729081b8316ac76a808ec509a7aee4d6831f7..60ee899a7606fd9a7de3e4fad963a11816690b92 100644 --- a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java +++ b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java -@@ -75,6 +75,11 @@ public class TropicalFish extends AbstractSchoolingFish { +@@ -74,6 +74,11 @@ public class TropicalFish extends AbstractSchoolingFish { public boolean isSensitiveToWater() { return this.level.purpurConfig.tropicalFishTakeDamageFromWater; } @@ -373,10 +373,10 @@ index 5b8a6b2705c6f317e4e48e7a9183b140489c355a..9585b8a3d6d0777df3fb4debfd9d7a77 public static String getPredefinedName(int variant) { diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -index e8e317c822a73b98545f3cf6e36aa284937e8c5b..1b14e6fed7669651741344a18c81da6207c9e924 100644 +index 3c38345b32d106a169d1e6abcae54f282d08fe89..ddc69668c30e089df18858f697b6370d1931eed8 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -@@ -116,6 +116,11 @@ public class Turtle extends Animal { +@@ -114,6 +114,11 @@ public class Turtle extends Animal { public boolean isSensitiveToWater() { return this.level.purpurConfig.turtleTakeDamageFromWater; } @@ -389,10 +389,10 @@ index e8e317c822a73b98545f3cf6e36aa284937e8c5b..1b14e6fed7669651741344a18c81da62 public void setHomePos(BlockPos pos) { 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 63d3f68326386532b027c077c35629c75508bfc4..f3ff018e61eb89d581744d5dfae00f4d5bcd4949 100644 +index 3ee87e888b048dd3272a633b40b5987276b30155..9e47e6e546af5e5d5c8fefa885742cfbd9a64cba 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -@@ -209,6 +209,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -212,6 +212,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { public boolean isSensitiveToWater() { return this.level.purpurConfig.wolfTakeDamageFromWater; } @@ -405,10 +405,10 @@ index 63d3f68326386532b027c077c35629c75508bfc4..f3ff018e61eb89d581744d5dfae00f4d @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index dc84d044aa7533d31c48ed80e49c44951320cb5e..b3f2bd60cd52a51e04cf92da321d247f1d2c7c7b 100644 +index b7e2ed08864f5bde346faebf9498254dc9794ce6..d87a3434cbac31ef652e4dda08c280a5da51142e 100644 --- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -@@ -132,6 +132,11 @@ public class Axolotl extends Animal implements LerpingModel, Bucketable { +@@ -134,6 +134,11 @@ public class Axolotl extends Animal implements LerpingModel, Bucketable { public boolean isSensitiveToWater() { return this.level.purpurConfig.axolotlTakeDamageFromWater; } @@ -421,10 +421,10 @@ index dc84d044aa7533d31c48ed80e49c44951320cb5e..b3f2bd60cd52a51e04cf92da321d247f @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index dbfb6aa819d7bb86c60268daf9cf0b5a5200c5b1..3c4a53e569257a6f73fec9af2be25a422cc9e8b6 100644 +index 02146c9b5d64ed84869f946638f639d3cd176e5e..521fca2ae3297604e4a5a2579889ab564cfe97e5 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -@@ -104,6 +104,11 @@ public class Goat extends Animal { +@@ -99,6 +99,11 @@ public class Goat extends Animal { public boolean isSensitiveToWater() { return this.level.purpurConfig.goatTakeDamageFromWater; } @@ -469,10 +469,10 @@ index 16755249c4700fa59f704b7c88e3490d2ce3fc48..17a6ddaaa474ee4ac9dd77c19a471bfb @Override 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 6fffb293e1ca06a9f07fe30928e4dd8fff1b0a15..b0b8239ef3d9124343c8351320801d8f427773fd 100644 +index 68f28835905c018428d848c1fc9ffe7dabcac0d3..ce6efd1d26ad9fcaf0dd1557702c16b164baec08 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -@@ -142,6 +142,11 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { +@@ -141,6 +141,11 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { public boolean isSensitiveToWater() { return this.level.purpurConfig.llamaTakeDamageFromWater; } @@ -549,10 +549,10 @@ index 88da7a365c28e2d097d0a7bff30ea1acd4c7d5dc..74de599bfe2ee696848b3f74392b696f public static AttributeSupplier.Builder createAttributes() { 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 e30d8bfb4269e872c20a9bf91348dd3685a9332c..ce09b56dc4681eef7fb7f6563125889da016fc07 100644 +index 3e8f13020f56ce232518a6520d16e90744217938..75f4749c35a4cc35bc8617b1ba5c74ef198a423c 100644 --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -@@ -238,6 +238,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -237,6 +237,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob public void setSummoner(@Nullable java.util.UUID summoner) { this.summoner = summoner; } @@ -565,7 +565,7 @@ index e30d8bfb4269e872c20a9bf91348dd3685a9332c..ce09b56dc4681eef7fb7f6563125889d @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Blaze.java b/src/main/java/net/minecraft/world/entity/monster/Blaze.java -index 8cebcc68839a510fee3ff085e9308f6d351f51e8..e5652d9348c866027768418f2fd401c40a4e6df0 100644 +index 081f9ff6edf17a1588649cc69f48b2f577ce809f..d91b24400c31a2824320ba89369a9851040a867f 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Blaze.java +++ b/src/main/java/net/minecraft/world/entity/monster/Blaze.java @@ -77,6 +77,11 @@ public class Blaze extends Monster { @@ -597,7 +597,7 @@ index 5347ba12f2a07601c9f044081e5e6ce6472c4a2a..0ac5264a16c9121c0f6233e83c426199 @Override 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 b0e5146f0cf33f8fbc97c4c51edee252ad06e6a9..7a8726f69c2e5b4447793770e69118c9174ce3f0 100644 +index 9a0c450da922b0cdfd304795702df506113402ed..307634db13045413b47e2a18e614a15f325b8d3c 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java @@ -165,6 +165,11 @@ public class Creeper extends Monster implements PowerableMob { @@ -613,10 +613,10 @@ index b0e5146f0cf33f8fbc97c4c51edee252ad06e6a9..7a8726f69c2e5b4447793770e69118c9 @Override 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 699d4f1a60bb15a04dddbce6486ce10abd417a87..a8f13ac43b45a53ccd15fb222cd60ff6f59f0fed 100644 +index 801e9919dbb197549372afb1b380cdb5f0c9290d..f7221565b51aa35218919a2efea9f83de4b1f786 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Drowned.java +++ b/src/main/java/net/minecraft/world/entity/monster/Drowned.java -@@ -115,6 +115,11 @@ public class Drowned extends Zombie implements RangedAttackMob { +@@ -113,6 +113,11 @@ public class Drowned extends Zombie implements RangedAttackMob { public boolean isSensitiveToWater() { return this.level.purpurConfig.drownedTakeDamageFromWater; } @@ -645,10 +645,10 @@ index 2800594fea055d75268531d8ad3fef99721e5ca1..fc2b6dc1818d439905e90dc6d738c3cf public static AttributeSupplier.Builder createAttributes() { 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 1426d3ab3731f849cf88ed1b5e60b694c572ad71..e99751a15f0fef67525b8b392c3893561d240b2b 100644 +index 425a2cab66ce456b8e034b008d2cb82ecba62004..fee9d1eaadcee7d5bbdacceab5f6e25a30c7e5f2 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java -@@ -108,6 +108,11 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -107,6 +107,11 @@ public class EnderMan extends Monster implements NeutralMob { public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.endermanMaxHealth); } @@ -661,10 +661,10 @@ index 1426d3ab3731f849cf88ed1b5e60b694c572ad71..e99751a15f0fef67525b8b392c389356 @Override 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 3e0f287695fd3def8ed9967d921e141b7ff8bc47..faf16f91cfa689f2bb56fd9ac91aae76056c623b 100644 +index c644acd4402e41ec1eab919f35e378a8285b9b08..54015c50364e522b68c2546d4f28fff09776e8d6 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Endermite.java +++ b/src/main/java/net/minecraft/world/entity/monster/Endermite.java -@@ -70,6 +70,11 @@ public class Endermite extends Monster { +@@ -71,6 +71,11 @@ public class Endermite extends Monster { public void setPlayerSpawned(boolean playerSpawned) { this.isPlayerSpawned = playerSpawned; } @@ -677,7 +677,7 @@ index 3e0f287695fd3def8ed9967d921e141b7ff8bc47..faf16f91cfa689f2bb56fd9ac91aae76 @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 -index 6c3af9c64f9622150928da09ce8318c21d450b74..396dc17d26475db9037ec0ec2f72dd0750fed43d 100644 +index 912c594c2a5df21663b26da81cc3d78b37055a6a..7b655fdcee79da60d48e886b3be0dd7c4284a820 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Evoker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Evoker.java @@ -73,6 +73,11 @@ public class Evoker extends SpellcasterIllager { @@ -773,7 +773,7 @@ index 5b6a61fb2b44ea4dec4767958a2abe57d758646e..4d50e9d2b9b06cae0fe135cc91a90919 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java b/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java -index d5039d0a5e8a35cb7ce43792c909b21d1b0986f2..23e702df207e931e3f41e6094495aea397f32321 100644 +index b7b4e5173e0f6da888746f1d1679cbde43905bf0..86352b81d2c0be479fe96882c9a01972c9cf341c 100644 --- a/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java +++ b/src/main/java/net/minecraft/world/entity/monster/MagmaCube.java @@ -72,6 +72,11 @@ public class MagmaCube extends Slime { @@ -789,7 +789,7 @@ index d5039d0a5e8a35cb7ce43792c909b21d1b0986f2..23e702df207e931e3f41e6094495aea3 public static AttributeSupplier.Builder createAttributes() { 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 2ae234b2e3f7949fe852d341a5feca9a6738075a..9d83b50d43edc7bfd857daab7be90558d86ca334 100644 +index 42919b2267eed71e29830a96afdd3be19d6b6f68..bc5d6300c2e5f6cf8fbad73096e8a6e5d279a873 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java @@ -157,6 +157,11 @@ public class Phantom extends FlyingMob implements Enemy { @@ -853,10 +853,10 @@ index e63a27abef4b9aab0c2afbb92da994e8a11ac14a..f4cbe31de73fbc3828e0b57cefd969e2 @Override 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 e1407131ceab66bee552e1e2bc8f4ccef668ef62..cd6926096d8daeed159479e06436d9bebfb80026 100644 +index e207d70a031131217874837198a30d04b9640409..11d0195fb234f6d000efadeeaf48962c81fe701e 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java +++ b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java -@@ -66,6 +66,11 @@ public class Silverfish extends Monster { +@@ -67,6 +67,11 @@ public class Silverfish extends Monster { public boolean isSensitiveToWater() { return this.level.purpurConfig.silverfishTakeDamageFromWater; } @@ -885,10 +885,10 @@ index 8ce46cc00a01a678270e906078097aa717abdc41..51c548cd84bd83624fbff3f853a8050d @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Slime.java b/src/main/java/net/minecraft/world/entity/monster/Slime.java -index f8e39e7b4c5ab3a864a516a8937992874ff2d10a..b7c8ddc09a1761260919dbd3e49389104ce994e7 100644 +index 9582332f8fb211b41110d0fcda97521c2035ebb3..90c2e4ccc7191a43722c876c3804a829d98e8713 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Slime.java +++ b/src/main/java/net/minecraft/world/entity/monster/Slime.java -@@ -142,6 +142,11 @@ public class Slime extends Mob implements Enemy { +@@ -140,6 +140,11 @@ public class Slime extends Mob implements Enemy { public boolean isSensitiveToWater() { return this.level.purpurConfig.slimeTakeDamageFromWater; } @@ -933,10 +933,10 @@ index 4888502f99e0a9db246f9714a4d7534839bc5487..6f497991cfbb60462a9499d2c43260c6 public static boolean checkStraySpawnRules(EntityType type, ServerLevelAccessor world, MobSpawnType spawnReason, BlockPos pos, Random random) { 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 ead0c2c900fbfabef478b200e954d7388860249d..6058679371ec4e4f3b557ea818b625a475b0220b 100644 +index 5ff3373c9c73691d7f21c05b0f044c198b2bab2d..a7669b3daa4a58a3a6a931de3d86a4fbf937e609 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Strider.java +++ b/src/main/java/net/minecraft/world/entity/monster/Strider.java -@@ -122,6 +122,11 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { +@@ -121,6 +121,11 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { public int getPurpurBreedTime() { return this.level.purpurConfig.striderBreedingTicks; } @@ -949,7 +949,7 @@ index ead0c2c900fbfabef478b200e954d7388860249d..6058679371ec4e4f3b557ea818b625a4 public static boolean checkStriderSpawnRules(EntityType type, LevelAccessor world, MobSpawnType spawnReason, BlockPos pos, Random random) { diff --git a/src/main/java/net/minecraft/world/entity/monster/Vex.java b/src/main/java/net/minecraft/world/entity/monster/Vex.java -index 441357d9a74126a145293193eb02f24e26db3561..c8934f1b0fbac164ce110d44f7697e06834ca275 100644 +index 429c960ef287e71974be5567374e44a44be09c88..e68fbe7cdaefedb1e59d2e96c6e0755180695a27 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Vex.java +++ b/src/main/java/net/minecraft/world/entity/monster/Vex.java @@ -110,6 +110,11 @@ public class Vex extends Monster { @@ -981,7 +981,7 @@ index 729eb8a30b35ef5c70be30b3141b9da5c74388f6..876964a73109bba22584d120fdfd0089 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Witch.java b/src/main/java/net/minecraft/world/entity/monster/Witch.java -index d6ad32e3622164a35bea1237ec62745588f7f031..723e3961bc72a416b72867c11536eed09f93c267 100644 +index 801355c7c3a4acfb3c45b0d5bc3218e948f72e10..7a59a1834cf07933215bdee56dda9a94ddd8bd85 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Witch.java +++ b/src/main/java/net/minecraft/world/entity/monster/Witch.java @@ -84,6 +84,11 @@ public class Witch extends Raider implements RangedAttackMob { @@ -1029,7 +1029,7 @@ index 9928af5318c1cc4676c5cf215840ce0f8baf9024..b99419b712b9af385988f1a1271b28f4 @Override 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 dd879f7f879d42546e84cb2eebcea7c2f6acf8cd..f2ac17f5e4f3f229131f844c1097bb006cb8cf57 100644 +index 53513758072a117e2938ba9735b99247abf874d8..14ca49e3bb0942b11e1e8bde14b7d37a61627891 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java @@ -142,6 +142,11 @@ public class Zombie extends Monster { @@ -1045,10 +1045,10 @@ index dd879f7f879d42546e84cb2eebcea7c2f6acf8cd..f2ac17f5e4f3f229131f844c1097bb00 @Override 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 1e3969d0a462e5e8270128dbc22a4d09683f3da9..d656fc034212822df8cec3645b02dcfe0f7b9325 100644 +index 2ed3df59dbbb811a1b2c13c4a6eff9c602371149..f0905d83cd47ee4dbb076515e2a90c97027ed3e9 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -@@ -120,6 +120,11 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { +@@ -124,6 +124,11 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { public boolean isSensitiveToWater() { return this.level.purpurConfig.zombieVillagerTakeDamageFromWater; } @@ -1061,7 +1061,7 @@ index 1e3969d0a462e5e8270128dbc22a4d09683f3da9..d656fc034212822df8cec3645b02dcfe @Override 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 ae53d716c25c1cf328231384595049536a50d1bd..7eb4e1e4f6c856657d9a844479fdee0087a96a0c 100644 +index 918cd5c51849e3de4915016a76bbd4b66c3b8b42..202d5da8bd1345d04a98ac6bc9bbc13fda16dc3e 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java @@ -99,6 +99,11 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { @@ -1125,10 +1125,10 @@ index e0be095bdff6a9316812715f26772ef4e6e77495..faef3d8204d5d421a55c5dc40677eb9c public static AttributeSupplier.Builder createAttributes() { 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 6930429c5ac77768d4ef7ad2dc38778b475a8bd4..9755517f0c1d66db5bfd00946114fab5db6776d6 100644 +index 8a4a18e87f5770addf4316ab9262895780396ba5..6d43867d149b9ce5356d5ad1fbe119de1af212df 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -191,6 +191,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -193,6 +193,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler public boolean isSensitiveToWater() { return this.level.purpurConfig.villagerTakeDamageFromWater; } @@ -1141,10 +1141,10 @@ index 6930429c5ac77768d4ef7ad2dc38778b475a8bd4..9755517f0c1d66db5bfd00946114fab5 @Override 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 f3994e53af79a4c3bb327e43cf133a12c20662bf..2acf9de429b75acfe5953628ca503260d6a62656 100644 +index 8d6930868a42b9fc98d7672bff433ec50d36999e..53bebecd30fee7613af73901b3aa9961982153e2 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -@@ -97,6 +97,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill +@@ -96,6 +96,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill public boolean isSensitiveToWater() { return this.level.purpurConfig.wanderingTraderTakeDamageFromWater; } diff --git a/patches/server/0245-Potion-NamespacedKey.patch b/patches/server/0245-Potion-NamespacedKey.patch index 9df879bff..dad73de3b 100644 --- a/patches/server/0245-Potion-NamespacedKey.patch +++ b/patches/server/0245-Potion-NamespacedKey.patch @@ -5,17 +5,17 @@ Subject: [PATCH] Potion NamespacedKey diff --git a/src/main/java/net/minecraft/world/effect/MobEffectInstance.java b/src/main/java/net/minecraft/world/effect/MobEffectInstance.java -index 0dadea0c9559d99c7de04dbda68b3e743c9eeecb..6827d71965aa122c1f30bc49c04e0b0065c1d8ec 100644 +index b84610d00f710c656d9eaf85b80e796f8be4bca3..390a70b9d9aa40a2511ab6588df2833a34682e5a 100644 --- a/src/main/java/net/minecraft/world/effect/MobEffectInstance.java +++ b/src/main/java/net/minecraft/world/effect/MobEffectInstance.java -@@ -6,6 +6,7 @@ import net.minecraft.nbt.CompoundTag; +@@ -6,6 +6,7 @@ import javax.annotation.Nullable; + import net.minecraft.nbt.CompoundTag; import net.minecraft.world.entity.LivingEntity; - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; + import org.slf4j.Logger; +import org.bukkit.NamespacedKey; public class MobEffectInstance implements Comparable { - private static final Logger LOGGER = LogManager.getLogger(); + private static final Logger LOGGER = LogUtils.getLogger(); @@ -17,6 +18,7 @@ public class MobEffectInstance implements Comparable { private boolean visible; private boolean showIcon; @@ -148,7 +148,7 @@ index 0dadea0c9559d99c7de04dbda68b3e743c9eeecb..6827d71965aa122c1f30bc49c04e0b00 public void setNoCounter(boolean permanent) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 92a08935e7b1c936e8aa379b118c345b89dc23d7..d2439ebab74c53e01f27fe9a9fe9366b99974dea 100644 +index ab5d668cf295d84663ced382cbde8dc940176470..7534889c4169cbd26f7e778cbd3be49bd2640c83 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -436,7 +436,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { diff --git a/patches/server/0247-Option-to-prevent-spiders-from-climbing-world-border.patch b/patches/server/0247-Option-to-prevent-spiders-from-climbing-world-border.patch index efe5b0529..9bcd80629 100644 --- a/patches/server/0247-Option-to-prevent-spiders-from-climbing-world-border.patch +++ b/patches/server/0247-Option-to-prevent-spiders-from-climbing-world-border.patch @@ -5,18 +5,18 @@ Subject: [PATCH] Option to prevent spiders from climbing world border diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 3d2e00dd971b21848679c4e386e6357592320dd0..44e693e88e03cd34ac0fd293e611a0ebf1221f53 100644 +index b63fde99b966ee2c2acdc0feeef08461ef7b5816..856f362e8def21fb8d15c55c46fd17642e973d61 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -239,6 +239,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i - public boolean horizontalCollision; +@@ -243,6 +243,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i public boolean verticalCollision; + public boolean verticalCollisionBelow; public boolean minorHorizontalCollision; + public boolean collidingWithWorldBorder; // Purpur public boolean hurtMarked; protected Vec3 stuckSpeedMultiplier; @Nullable -@@ -1321,7 +1322,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i +@@ -1334,7 +1335,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i io.papermc.paper.util.CollisionUtil.getCollisions(world, this, collisionBox, potentialCollisions, false, true, false, false, null, null); diff --git a/patches/server/0248-Ability-for-hoe-to-replant-crops-and-nether-warts.patch b/patches/server/0248-Ability-for-hoe-to-replant-crops-and-nether-warts.patch index 6952b2b26..d23b005d6 100644 --- a/patches/server/0248-Ability-for-hoe-to-replant-crops-and-nether-warts.patch +++ b/patches/server/0248-Ability-for-hoe-to-replant-crops-and-nether-warts.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Ability for hoe to replant crops and nether warts diff --git a/src/main/java/net/minecraft/world/level/block/BushBlock.java b/src/main/java/net/minecraft/world/level/block/BushBlock.java -index 1f8cf302d2309aec2955832ffafd87f14934e141..4dbadec09f38e63b4b19ea127ce43a822baff081 100644 +index 03fde6e47c4a347c62fe9b4a3351769aedf874f6..3eb95e9b4870b7dd782f676f50e381bf15f143dc 100644 --- a/src/main/java/net/minecraft/world/level/block/BushBlock.java +++ b/src/main/java/net/minecraft/world/level/block/BushBlock.java -@@ -50,4 +50,24 @@ public class BushBlock extends Block { +@@ -48,4 +48,24 @@ public class BushBlock extends Block { public boolean isPathfindable(BlockState state, BlockGetter world, BlockPos pos, PathComputationType type) { return type == PathComputationType.AIR && !this.hasCollision ? true : super.isPathfindable(state, world, pos, type); } @@ -17,7 +17,7 @@ index 1f8cf302d2309aec2955832ffafd87f14934e141..4dbadec09f38e63b4b19ea127ce43a82 + public void playerDestroyAndReplant(net.minecraft.world.level.Level world, net.minecraft.world.entity.player.Player player, BlockPos pos, BlockState state, @javax.annotation.Nullable net.minecraft.world.level.block.entity.BlockEntity blockEntity, net.minecraft.world.item.ItemStack itemInHand, net.minecraft.world.level.ItemLike itemToReplant) { + player.awardStat(net.minecraft.stats.Stats.BLOCK_MINED.get(this)); + player.causeFoodExhaustion(0.005F, org.bukkit.event.entity.EntityExhaustionEvent.ExhaustionReason.BLOCK_MINED); -+ java.util.List dropList = Block.getDrops(state, (ServerLevel) world, pos, blockEntity, player, itemInHand); ++ java.util.List dropList = Block.getDrops(state, (net.minecraft.server.level.ServerLevel) world, pos, blockEntity, player, itemInHand); + + boolean planted = false; + for (net.minecraft.world.item.ItemStack itemToDrop : dropList) { @@ -29,7 +29,7 @@ index 1f8cf302d2309aec2955832ffafd87f14934e141..4dbadec09f38e63b4b19ea127ce43a82 + Block.popResource(world, pos, itemToDrop); + } + -+ state.spawnAfterBreak((ServerLevel) world, pos, itemInHand); ++ state.spawnAfterBreak((net.minecraft.server.level.ServerLevel) world, pos, itemInHand); + } + // Purpur end } @@ -74,7 +74,7 @@ index cc8e94dc7ad93a9b7cf71315f5910daa35bc0778..c0ef9c9c438a2716f5d2cd589a0b4e85 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 042d93e68f883eda989a08bcffe7be0ff61c8d9b..7810776e47817c16caee500344f8c1d812b5782e 100644 +index c684f8e65ae8e32c85d511030358c5b1cd56c003..19873560257005a4039454f53352f1817b79a520 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -545,6 +545,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0250-Turtle-eggs-random-tick-crack-chance.patch b/patches/server/0250-Turtle-eggs-random-tick-crack-chance.patch index 4d7b0ae2b..0b73d0820 100644 --- a/patches/server/0250-Turtle-eggs-random-tick-crack-chance.patch +++ b/patches/server/0250-Turtle-eggs-random-tick-crack-chance.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Turtle eggs random tick crack chance diff --git a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java -index 5b29f3fced5435e172dd69f6f4eb265e760b6454..f22be8ecef77ba73be758dce40acad6e93702fe4 100644 +index 08401d2908e41d1ce3968ab085c4c376da33181f..09438e86f7228336f6376118ec2476247f477841 100644 --- a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java +++ b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java -@@ -12,13 +12,11 @@ import net.minecraft.world.entity.Entity; +@@ -11,13 +11,11 @@ import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.ExperienceOrb; import net.minecraft.world.entity.LivingEntity; @@ -22,7 +22,7 @@ index 5b29f3fced5435e172dd69f6f4eb265e760b6454..f22be8ecef77ba73be758dce40acad6e import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.BlockGetter; -@@ -158,7 +156,7 @@ public class TurtleEggBlock extends Block { +@@ -157,7 +155,7 @@ public class TurtleEggBlock extends Block { private boolean shouldUpdateHatchLevel(Level world) { float f = world.getTimeOfDay(1.0F); @@ -32,7 +32,7 @@ index 5b29f3fced5435e172dd69f6f4eb265e760b6454..f22be8ecef77ba73be758dce40acad6e @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a5c555e736e8883c485a37d86110777921e07489..0318508770b956b9278466e6f2d1f724a6f5fd70 100644 +index ce431461ea8b55e5b3bf87c3a1a338a63acc578e..7017a397dc2a3e27376c95983cedcd6313ca8ebd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -977,11 +977,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0251-Mob-head-visibility-percent.patch b/patches/server/0251-Mob-head-visibility-percent.patch index 0f864475b..9dfd88322 100644 --- a/patches/server/0251-Mob-head-visibility-percent.patch +++ b/patches/server/0251-Mob-head-visibility-percent.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Mob head visibility percent diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 35bc51479814a293d5ebed62e0ed0d2e178bab2f..78c999b20a312b576095a745d89229cbc110c3cd 100644 +index 360aa9d2f9d5a8ecd0db36a3715825222fec018e..f8c7eb51608fcf91de3da03afd9ffd34dbedaffc 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -989,9 +989,17 @@ public abstract class LivingEntity extends Entity { +@@ -992,9 +992,17 @@ public abstract class LivingEntity extends Entity { ItemStack itemstack = this.getItemBySlot(EquipmentSlot.HEAD); EntityType entitytypes = entity.getType(); diff --git a/patches/server/0252-Configurable-valid-characters-for-usernames.patch b/patches/server/0252-Configurable-valid-characters-for-usernames.patch index bd4b6af0f..5be57d5cb 100644 --- a/patches/server/0252-Configurable-valid-characters-for-usernames.patch +++ b/patches/server/0252-Configurable-valid-characters-for-usernames.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable valid characters for usernames diff --git a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java -index 5f154db373026ca78b812f9247dc9288d6826cb0..547158e80c501aec66f4ffc96c0a496a346e0dd3 100644 +index 03eb7933f309b30fa8c243f4dd0a292b850bfda0..00a5731e7b1e2b84453e6d1416dce8bd9e1b1b10 100644 --- a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java -@@ -237,6 +237,8 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener +@@ -233,6 +233,8 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener return false; } diff --git a/patches/server/0253-Shears-can-have-looting-enchantment.patch b/patches/server/0253-Shears-can-have-looting-enchantment.patch index 51707bfd0..cfc456de7 100644 --- a/patches/server/0253-Shears-can-have-looting-enchantment.patch +++ b/patches/server/0253-Shears-can-have-looting-enchantment.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Shears can have looting enchantment diff --git a/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java b/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java -index c861505325efecfb53069ce44c14bc20fb851c59..405884a6ab983eed56554eeba6d6acd483b13374 100644 +index 2366d411bf64f88c7296e888cd3bf584825ae4a9..c119aae5b5f0d0717a883f3df5566185046534ee 100644 --- a/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java +++ b/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java -@@ -106,7 +106,7 @@ public class ShearsDispenseItemBehavior extends OptionalDispenseItemBehavior { +@@ -107,7 +107,7 @@ public class ShearsDispenseItemBehavior extends OptionalDispenseItemBehavior { continue; } // CraftBukkit end @@ -37,10 +37,10 @@ index 5e8cc5cfac8888628c6d513148f41be09ca65a2c..a089fc61ec09be6b7490375489178dc6 boolean readyForShearing(); } diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index 00cfd89f175206b3bb29d3a954f8564077a7115b..08e4dce53f7d2709f64ed41afdb362d5673c534c 100644 +index 48459f6c9a9d7112ef335725e1989883a892c9d7..abd93b9b1edd9166cf17852a547a9d0d99909871 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -@@ -166,7 +166,7 @@ public class MushroomCow extends Cow implements Shearable { +@@ -165,7 +165,7 @@ public class MushroomCow extends Cow implements Shearable { return tryRide(player, hand); // Purpur } // CraftBukkit end @@ -49,7 +49,7 @@ index 00cfd89f175206b3bb29d3a954f8564077a7115b..08e4dce53f7d2709f64ed41afdb362d5 this.gameEvent(GameEvent.SHEAR, (Entity) player); if (!this.level.isClientSide) { itemstack.hurtAndBreak(1, player, (entityhuman1) -> { -@@ -209,7 +209,7 @@ public class MushroomCow extends Cow implements Shearable { +@@ -208,7 +208,7 @@ public class MushroomCow extends Cow implements Shearable { } @Override @@ -58,7 +58,7 @@ index 00cfd89f175206b3bb29d3a954f8564077a7115b..08e4dce53f7d2709f64ed41afdb362d5 this.level.playSound((Player) null, (Entity) this, SoundEvents.MOOSHROOM_SHEAR, shearedSoundCategory, 1.0F, 1.0F); if (!this.level.isClientSide()) { ((ServerLevel) this.level).sendParticles(ParticleTypes.EXPLOSION, this.getX(), this.getY(0.5D), this.getZ(), 1, 0.0D, 0.0D, 0.0D, 0.0D); -@@ -244,7 +244,7 @@ public class MushroomCow extends Cow implements Shearable { +@@ -243,7 +243,7 @@ public class MushroomCow extends Cow implements Shearable { this.discard(); // CraftBukkit - from above // CraftBukkit end @@ -94,7 +94,7 @@ index fbe71ed86553965aa9fc20b7d8e6fdefd1d85a60..d61204c8aaef5e0e4e79096b6469ce3f for (int j = 0; j < i; ++j) { this.forceDrops = true; // CraftBukkit 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 2396c175433fdfe23b0db0e3303d82c34309a540..dc9694ec29bc1a522a1501caa6e2b63f358fe564 100644 +index 83906fbb59d678451f93e6335aa674a7ff6bc9b1..908df941020d0f4aed1fe0827f7649056354f5d4 100644 --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java @@ -200,7 +200,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM diff --git a/patches/server/0254-Stop-bees-from-dying-after-stinging.patch b/patches/server/0254-Stop-bees-from-dying-after-stinging.patch index a917716a1..ed8f0f8d8 100644 --- a/patches/server/0254-Stop-bees-from-dying-after-stinging.patch +++ b/patches/server/0254-Stop-bees-from-dying-after-stinging.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Stop bees from dying after stinging 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 e2a3a3e2722c7c5fae232ce30538ccb5fa663b7d..19cc69f9bca1bb86d0a84345ae39a0a18f87fa54 100644 +index 02fc6bb52419b75f04092b33e15e0ab1ea7a7b1a..2a1785a6758a030bc554accfba35d82974fc1fa7 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java -@@ -456,6 +456,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -454,6 +454,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { this.hurt(DamageSource.DROWN, 1.0F); } @@ -17,7 +17,7 @@ index e2a3a3e2722c7c5fae232ce30538ccb5fa663b7d..19cc69f9bca1bb86d0a84345ae39a0a1 ++this.timeSinceSting; if (this.timeSinceSting % 5 == 0 && this.random.nextInt(Mth.clamp(1200 - this.timeSinceSting, (int) 1, (int) 1200)) == 0) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cd900a8022aa23da4ab2a294c74100fc80fb960d..6259405b9e934534163f32cf7ba4036ebbd8859a 100644 +index 978be4f1f14a8fe647ea31ff2002a16010210a33..18611782bc89ea034565709530637838e5327eb7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1076,6 +1076,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0255-Give-bee-counts-in-beehives-to-Purpur-clients.patch b/patches/server/0255-Give-bee-counts-in-beehives-to-Purpur-clients.patch index 8db3e6d10..06e7990e4 100644 --- a/patches/server/0255-Give-bee-counts-in-beehives-to-Purpur-clients.patch +++ b/patches/server/0255-Give-bee-counts-in-beehives-to-Purpur-clients.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Give bee counts in beehives to Purpur clients diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 3dc6dc5a17ab2d8b93bf38b63da8fd55bdcd11da..808c1049c55acf028e3a6ed07209dea4624b215b 100644 +index 13f7389e9d26940e7a6ffcdc2c266b26cd5c7319..25ad2d70a91ce127fbd96ff649939f9acfdb923e 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1146,6 +1146,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop Actual fall distance needed to trample 6.0 -> 6.75 diff --git a/src/main/java/net/minecraft/world/level/block/FarmBlock.java b/src/main/java/net/minecraft/world/level/block/FarmBlock.java -index a750d9cfbb7ba9057004924cac2b5a814501e67e..07314cddf5afd18bc0f06d8b3de7b1dc340e5a02 100644 +index 29a538964d31527c9d10e25716e99ac22775119d..4871afa8f86f2945dc35fb55c709d91c28a15120 100644 --- a/src/main/java/net/minecraft/world/level/block/FarmBlock.java +++ b/src/main/java/net/minecraft/world/level/block/FarmBlock.java -@@ -99,7 +99,7 @@ public class FarmBlock extends Block { +@@ -98,7 +98,7 @@ public class FarmBlock extends Block { @Override public void fallOn(Level world, BlockState state, BlockPos pos, Entity entity, float fallDistance) { super.fallOn(world, state, pos, entity, fallDistance); // CraftBukkit - moved here as game rules / events shouldn't affect fall damage. @@ -35,7 +35,7 @@ index a750d9cfbb7ba9057004924cac2b5a814501e67e..07314cddf5afd18bc0f06d8b3de7b1dc org.bukkit.event.Cancellable cancellable; if (entity instanceof Player) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cbc915076d8ba7da3ca83b43d296f7d36a12b98b..319f88a66cdcf490ca190f2a0545d4b45a44187f 100644 +index 18611782bc89ea034565709530637838e5327eb7..248ed206c8cfdf1dc3363a8f8a930a7d6acea97f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -834,6 +834,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0257-Configurable-player-pickup-exp-delay.patch b/patches/server/0257-Configurable-player-pickup-exp-delay.patch index 3c2afd7ee..5bd161de4 100644 --- a/patches/server/0257-Configurable-player-pickup-exp-delay.patch +++ b/patches/server/0257-Configurable-player-pickup-exp-delay.patch @@ -9,10 +9,10 @@ players still only pick up one orb every tick. However, setting this to any negative number will pick up all orbs instantly. diff --git a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java -index 68072fae050fb83735725f3dc2525bfc9c0cc159..a069035f9bfc821d5bb52a654aec5842f433b3fc 100644 +index 37fe86f0f6ea006f658cd6a68757c1c12ae32eb7..d6ee7b9d2fafbe76d4705a182ae1a0e98ce91eef 100644 --- a/src/main/java/net/minecraft/world/entity/ExperienceOrb.java +++ b/src/main/java/net/minecraft/world/entity/ExperienceOrb.java -@@ -300,8 +300,8 @@ public class ExperienceOrb extends Entity { +@@ -301,8 +301,8 @@ public class ExperienceOrb extends Entity { @Override public void playerTouch(Player player) { if (!this.level.isClientSide) { @@ -24,10 +24,10 @@ index 68072fae050fb83735725f3dc2525bfc9c0cc159..a069035f9bfc821d5bb52a654aec5842 int i = this.repairPlayerItems(player, this.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 -index 7261cb0c281bc0aaa6f0a0cc707ac7edff80a865..9fef9468d010a8e152c6936b3efbe74f501b02ba 100644 +index 302db826868980d3ad617013413632f97ab6643a..64b4ce3dc8b5e43125f668f5fc00b3f9809c843a 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -621,7 +621,7 @@ public abstract class Player extends LivingEntity { +@@ -622,7 +622,7 @@ public abstract class Player extends LivingEntity { for (int i = 0; i < list.size(); ++i) { Entity entity = (Entity) list.get(i); diff --git a/patches/server/0259-Dont-eat-blocks-in-non-ticking-chunks.patch b/patches/server/0259-Dont-eat-blocks-in-non-ticking-chunks.patch index 28b0fd764..432e5e5e9 100644 --- a/patches/server/0259-Dont-eat-blocks-in-non-ticking-chunks.patch +++ b/patches/server/0259-Dont-eat-blocks-in-non-ticking-chunks.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Dont eat blocks in non ticking chunks diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index 5ce3feae48e97eaa64798a401e399adc3c8f57f8..ef34a8a6cf82202f79a918b6f117ecbd6249f044 100644 +index f8713a8b5abbb246a13646f05ece7438f6151a79..705bfea2c58091bae0a63f0b86b5c55571a4af6a 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -1741,7 +1741,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1793,7 +1793,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider return this.anyPlayerCloseEnoughForSpawning(this.getUpdatingChunkIfPresent(chunkcoordintpair.toLong()), chunkcoordintpair, reducedRange); } diff --git a/patches/server/0262-Max-joins-per-second.patch b/patches/server/0262-Max-joins-per-second.patch index 35c552310..218ec0d83 100644 --- a/patches/server/0262-Max-joins-per-second.patch +++ b/patches/server/0262-Max-joins-per-second.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Max joins per second When this option is set to true the `max-joins-per-tick` setting in paper.yml will be used per second instead of per tick diff --git a/src/main/java/net/minecraft/network/Connection.java b/src/main/java/net/minecraft/network/Connection.java -index 7b8f9cf06833860d0fc02399822e6aea214883ed..03701c154e7bfad5314f3ed0e51866a292a08175 100644 +index 9bbf990212ee55a267d0eb1e863618c50fa706da..76d177d27735e93bbac5f9cf0b3556e929d72317 100644 --- a/src/main/java/net/minecraft/network/Connection.java +++ b/src/main/java/net/minecraft/network/Connection.java -@@ -532,11 +532,20 @@ public class Connection extends SimpleChannelInboundHandler> { +@@ -544,11 +544,20 @@ public class Connection extends SimpleChannelInboundHandler> { private static final int MAX_PER_TICK = com.destroystokyo.paper.PaperConfig.maxJoinsPerTick; // Paper private static int joinAttemptsThisTick; // Paper private static int currTick; // Paper diff --git a/patches/server/0263-Configurable-minimum-demand-for-trades.patch b/patches/server/0263-Configurable-minimum-demand-for-trades.patch index 1bc2d9415..dafa7ac20 100644 --- a/patches/server/0263-Configurable-minimum-demand-for-trades.patch +++ b/patches/server/0263-Configurable-minimum-demand-for-trades.patch @@ -9,10 +9,10 @@ This patch adds a config option to allow the minimum demand to instead be configurable. 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 9755517f0c1d66db5bfd00946114fab5db6776d6..b9f228d660b2279284e64fc3bbfa90fc7d2d20b0 100644 +index 6d43867d149b9ce5356d5ad1fbe119de1af212df..59bfaf90d448223c5aee9b18d2915539f54f0d4b 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -532,7 +532,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -534,7 +534,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler while (iterator.hasNext()) { MerchantOffer merchantrecipe = (MerchantOffer) iterator.next(); diff --git a/patches/server/0264-Lobotomize-stuck-villagers.patch b/patches/server/0264-Lobotomize-stuck-villagers.patch index 2d3c33562..71b131c93 100644 --- a/patches/server/0264-Lobotomize-stuck-villagers.patch +++ b/patches/server/0264-Lobotomize-stuck-villagers.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Lobotomize stuck villagers 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 b9f228d660b2279284e64fc3bbfa90fc7d2d20b0..3cf27428820e9cd96cd54abe3bfc80d9e6bbf96a 100644 +index 59bfaf90d448223c5aee9b18d2915539f54f0d4b..b5db8212aa6b20fbaa8ea7dbcd14c9cc13460fe0 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -138,6 +138,8 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -140,6 +140,8 @@ public class Villager extends AbstractVillager implements ReputationEventHandler return villageplacetype == PoiType.MEETING; }); private final int brainTickOffset; // Purpur @@ -17,7 +17,7 @@ index b9f228d660b2279284e64fc3bbfa90fc7d2d20b0..3cf27428820e9cd96cd54abe3bfc80d9 public long nextGolemPanic = -1; // Pufferfish -@@ -196,6 +198,47 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -198,6 +200,47 @@ public class Villager extends AbstractVillager implements ReputationEventHandler protected boolean isAlwaysExperienceDropper() { return this.level.purpurConfig.villagerAlwaysDropExp; } @@ -65,7 +65,7 @@ index b9f228d660b2279284e64fc3bbfa90fc7d2d20b0..3cf27428820e9cd96cd54abe3bfc80d9 // Purpur end @Override -@@ -293,6 +336,15 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -295,6 +338,15 @@ public class Villager extends AbstractVillager implements ReputationEventHandler protected void customServerAiStep() { mobTick(false); } protected void mobTick(boolean inactive) { this.level.getProfiler().push("villagerBrain"); @@ -81,7 +81,7 @@ index b9f228d660b2279284e64fc3bbfa90fc7d2d20b0..3cf27428820e9cd96cd54abe3bfc80d9 // Pufferfish start if (!inactive) { // Purpur start -@@ -303,6 +355,12 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -305,6 +357,12 @@ public class Villager extends AbstractVillager implements ReputationEventHandler this.getBrain().tick((ServerLevel) this.level, this); // Paper } // Pufferfish end diff --git a/patches/server/0267-MC-50647-Fix-spawners-not-spawning-slimes-correctly.patch b/patches/server/0267-MC-50647-Fix-spawners-not-spawning-slimes-correctly.patch index 6029d0424..24ae285a4 100644 --- a/patches/server/0267-MC-50647-Fix-spawners-not-spawning-slimes-correctly.patch +++ b/patches/server/0267-MC-50647-Fix-spawners-not-spawning-slimes-correctly.patch @@ -5,10 +5,10 @@ Subject: [PATCH] MC-50647 - Fix spawners not spawning slimes correctly diff --git a/src/main/java/net/minecraft/world/entity/monster/Slime.java b/src/main/java/net/minecraft/world/entity/monster/Slime.java -index b7c8ddc09a1761260919dbd3e49389104ce994e7..d8a21a982b4ebb133f6208fded11ba5f588d9f1f 100644 +index 90c2e4ccc7191a43722c876c3804a829d98e8713..47e9d93f75d3cfbda4e5a3a3a2ed1e204331a961 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Slime.java +++ b/src/main/java/net/minecraft/world/entity/monster/Slime.java -@@ -405,6 +405,7 @@ public class Slime extends Mob implements Enemy { +@@ -403,6 +403,7 @@ public class Slime extends Mob implements Enemy { public static boolean checkSlimeSpawnRules(EntityType type, LevelAccessor world, MobSpawnType spawnReason, BlockPos pos, Random random) { if (world.getDifficulty() != Difficulty.PEACEFUL) { diff --git a/patches/server/0268-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch b/patches/server/0268-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch index 2110f7f79..595e698c0 100644 --- a/patches/server/0268-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch +++ b/patches/server/0268-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch @@ -5,15 +5,15 @@ Subject: [PATCH] MC-238526 - Fix spawner not spawning water animals correctly diff --git a/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java b/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java -index c3bba52a5c7a618fd9731045268fa9ccebff14f4..f9252c03c356ea8bfb6a7592ea7c6bf43f11a534 100644 +index c039b896ee85543c26a8ab76640080f539deaa4c..b79045402f490373d3d83d80aa8e3b94a2ac31ec 100644 --- a/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java +++ b/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java @@ -83,6 +83,6 @@ public abstract class WaterAnimal extends PathfinderMob { i = world.getMinecraftWorld().paperConfig.waterAnimalMaxSpawnHeight != null ? world.getMinecraftWorld().paperConfig.waterAnimalMaxSpawnHeight : i; j = world.getMinecraftWorld().paperConfig.waterAnimalMinSpawnHeight != null ? world.getMinecraftWorld().paperConfig.waterAnimalMinSpawnHeight : j; // Paper end -- return world.getFluidState(pos.below()).is(FluidTags.WATER) && world.getBlockState(pos.above()).is(Blocks.WATER) && pos.getY() >= j && pos.getY() <= i; -+ return world.getFluidState(pos.below()).is(FluidTags.WATER) && world.getBlockState(pos.above()).is(Blocks.WATER) && ((reason == MobSpawnType.SPAWNER && world.getMinecraftWorld().purpurConfig.spawnerFixMC238526) || (pos.getY() >= j && pos.getY() <= i)); // Purpur +- return pos.getY() >= j && pos.getY() <= i && world.getFluidState(pos.below()).is(FluidTags.WATER) && world.getBlockState(pos.above()).is(Blocks.WATER); ++ return ((reason == MobSpawnType.SPAWNER && world.getMinecraftWorld().purpurConfig.spawnerFixMC238526) || (pos.getY() >= j && pos.getY() <= i)) && world.getFluidState(pos.below()).is(FluidTags.WATER) && world.getBlockState(pos.above()).is(Blocks.WATER); // Purpur } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java diff --git a/patches/server/0269-Config-for-mob-last-hurt-by-player-time.patch b/patches/server/0269-Config-for-mob-last-hurt-by-player-time.patch index 930f9048f..21a798690 100644 --- a/patches/server/0269-Config-for-mob-last-hurt-by-player-time.patch +++ b/patches/server/0269-Config-for-mob-last-hurt-by-player-time.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config for mob last hurt by player time diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 260b5a61890ceac0e36aa08b70f0a0fa430cabb0..624fa29aeb3e4ec0998756d3ebd31ec7125950b1 100644 +index f8c7eb51608fcf91de3da03afd9ffd34dbedaffc..92154459fd46db7e9182952cc1f844298c2dcb3c 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1415,13 +1415,13 @@ public abstract class LivingEntity extends Entity { +@@ -1418,13 +1418,13 @@ public abstract class LivingEntity extends Entity { } if (entity1 instanceof net.minecraft.world.entity.player.Player) { diff --git a/patches/server/0271-Fix-compile-errors.patch b/patches/server/0271-Fix-compile-errors.patch new file mode 100644 index 000000000..cc95549fb --- /dev/null +++ b/patches/server/0271-Fix-compile-errors.patch @@ -0,0 +1,77 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: BillyGalbreath +Date: Tue, 1 Mar 2022 17:03:44 -0600 +Subject: [PATCH] Fix compile errors + + +diff --git a/src/main/java/net/minecraft/world/level/biome/Biome.java b/src/main/java/net/minecraft/world/level/biome/Biome.java +index 74b446bde17ff023fb19c422d15993fb1f4b3d69..e23d835557b02a1a882cfc8ae59e7d767e5ffe12 100644 +--- a/src/main/java/net/minecraft/world/level/biome/Biome.java ++++ b/src/main/java/net/minecraft/world/level/biome/Biome.java +@@ -37,6 +37,32 @@ import net.minecraft.world.level.material.Fluids; + public final class Biome { + public static final Codec DIRECT_CODEC; + public static final Codec NETWORK_CODEC; ++ static { ++ DIRECT_CODEC = RecordCodecBuilder.create((instance) -> { ++ return instance.group(Biome.ClimateSettings.CODEC.forGetter((biome) -> { ++ return biome.climateSettings; ++ }), Biome.BiomeCategory.CODEC.fieldOf("category").forGetter((biome) -> { ++ return biome.biomeCategory; ++ }), BiomeSpecialEffects.CODEC.fieldOf("effects").forGetter((biome) -> { ++ return biome.specialEffects; ++ }), BiomeGenerationSettings.CODEC.forGetter((biome) -> { ++ return biome.generationSettings; ++ }), MobSpawnSettings.CODEC.forGetter((biome) -> { ++ return biome.mobSettings; ++ })).apply(instance, Biome::new); ++ }); ++ NETWORK_CODEC = RecordCodecBuilder.create((instance) -> { ++ return instance.group(Biome.ClimateSettings.CODEC.forGetter((biome) -> { ++ return biome.climateSettings; ++ }), Biome.BiomeCategory.CODEC.fieldOf("category").forGetter((biome) -> { ++ return biome.biomeCategory; ++ }), BiomeSpecialEffects.CODEC.fieldOf("effects").forGetter((biome) -> { ++ return biome.specialEffects; ++ })).apply(instance, (weather, category, effects) -> { ++ return new Biome(weather, category, effects, BiomeGenerationSettings.EMPTY, MobSpawnSettings.EMPTY); ++ }); ++ }); ++ } + public static final Codec> CODEC = RegistryFileCodec.create(Registry.BIOME_REGISTRY, DIRECT_CODEC); + public static final Codec> LIST_CODEC = RegistryCodecs.homogeneousList(Registry.BIOME_REGISTRY, DIRECT_CODEC); + private static final PerlinSimplexNoise TEMPERATURE_NOISE = new PerlinSimplexNoise(new WorldgenRandom(new LegacyRandomSource(1234L)), ImmutableList.of(0)); +@@ -257,33 +283,6 @@ public final class Biome { + return biomeEntry.value().getBiomeCategory(); + } + +- static { +- DIRECT_CODEC = RecordCodecBuilder.create((instance) -> { +- return instance.group(Biome.ClimateSettings.CODEC.forGetter((biome) -> { +- return biome.climateSettings; +- }), Biome.BiomeCategory.CODEC.fieldOf("category").forGetter((biome) -> { +- return biome.biomeCategory; +- }), BiomeSpecialEffects.CODEC.fieldOf("effects").forGetter((biome) -> { +- return biome.specialEffects; +- }), BiomeGenerationSettings.CODEC.forGetter((biome) -> { +- return biome.generationSettings; +- }), MobSpawnSettings.CODEC.forGetter((biome) -> { +- return biome.mobSettings; +- })).apply(instance, Biome::new); +- }); +- NETWORK_CODEC = RecordCodecBuilder.create((instance) -> { +- return instance.group(Biome.ClimateSettings.CODEC.forGetter((biome) -> { +- return biome.climateSettings; +- }), Biome.BiomeCategory.CODEC.fieldOf("category").forGetter((biome) -> { +- return biome.biomeCategory; +- }), BiomeSpecialEffects.CODEC.fieldOf("effects").forGetter((biome) -> { +- return biome.specialEffects; +- })).apply(instance, (weather, category, effects) -> { +- return new Biome(weather, category, effects, BiomeGenerationSettings.EMPTY, MobSpawnSettings.EMPTY); +- }); +- }); +- } +- + public static class BiomeBuilder { + @Nullable + private Biome.Precipitation precipitation;