diff --git a/gradle.properties b/gradle.properties index 546df429f..5bfe0d38e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.4-R0.1-SNAPSHOT mcVersion = 1.21.4 -paperCommit = 742968e078744a9d9fea35dc601cb6fecf05d889 +paperCommit = eff617b8f886d81b91d74b9b0ee9951375e73425 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-api/paper-patches/features/0002-Purpur-config-files.patch b/purpur-api/paper-patches/features/0002-Purpur-config-files.patch index e3535a398..464b19132 100644 --- a/purpur-api/paper-patches/features/0002-Purpur-config-files.patch +++ b/purpur-api/paper-patches/features/0002-Purpur-config-files.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Purpur config files diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 365368983a25f7ccbd3c8b7b572a5173a4c868a0..594bcedd823acc87ed429ad8ef17b66e9dc15beb 100644 +index 7d5a3f8fe257000b559d64bc045b1e4a14bb295d..78637a4f9650c1dd7ccc94bbfeb1fac048aa7f69 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2330,6 +2330,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2334,6 +2334,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi } // Paper end diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Bukkit.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Bukkit.java.patch index 7bdf2cf76..b00a8e9a2 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Bukkit.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Bukkit.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2980,4 +_,133 @@ +@@ -2984,4 +_,133 @@ public static Server.Spigot spigot() { return server.spigot(); } diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/OfflinePlayer.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/OfflinePlayer.java.patch index 5048818d2..4abee8d53 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/OfflinePlayer.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/OfflinePlayer.java.patch @@ -1,8 +1,8 @@ --- a/src/main/java/org/bukkit/OfflinePlayer.java +++ b/src/main/java/org/bukkit/OfflinePlayer.java -@@ -573,4 +_,106 @@ +@@ -567,4 +_,104 @@ @Override - io.papermc.paper.persistence.@NotNull PersistentDataContainerView getPersistentDataContainer(); + io.papermc.paper.persistence.PersistentDataContainerView getPersistentDataContainer(); // Paper end - add pdc to offline player + + // Purpur start - OfflinePlayer API @@ -12,7 +12,7 @@ + * + * @return True if the player is allowed to fly. + */ -+ public boolean getAllowFlight(); ++ boolean getAllowFlight(); + + /** + * Sets if the OfflinePlayer is allowed to fly via jump key double-tap like in @@ -20,21 +20,21 @@ + * + * @param flight If flight should be allowed. + */ -+ public void setAllowFlight(boolean flight); ++ void setAllowFlight(boolean flight); + + /** + * Checks to see if this player is currently flying or not. + * + * @return True if the player is flying, else false. + */ -+ public boolean isFlying(); ++ boolean isFlying(); + + /** + * Makes this player start or stop flying. + * + * @param value True to fly. + */ -+ public void setFlying(boolean value); ++ void setFlying(boolean value); + + /** + * Sets the speed at which a client will fly. Negative values indicate @@ -44,7 +44,7 @@ + * @throws IllegalArgumentException If new speed is less than -1 or + * greater than 1 + */ -+ public void setFlySpeed(float value) throws IllegalArgumentException; ++ void setFlySpeed(float value) throws IllegalArgumentException; + + /** + * Sets the speed at which a client will walk. Negative values indicate @@ -54,21 +54,21 @@ + * @throws IllegalArgumentException If new speed is less than -1 or + * greater than 1 + */ -+ public void setWalkSpeed(float value) throws IllegalArgumentException; ++ void setWalkSpeed(float value) throws IllegalArgumentException; + + /** + * Gets the current allowed speed that a client can fly. + * + * @return The current allowed speed, from -1 to 1 + */ -+ public float getFlySpeed(); ++ float getFlySpeed(); + + /** + * Gets the current allowed speed that a client can walk. + * + * @return The current allowed speed, from -1 to 1 + */ -+ public float getWalkSpeed(); ++ float getWalkSpeed(); + + /** + * Sets OfflinePlayer's location. If player is online, it falls back to the Player#teleport implementation. @@ -76,7 +76,7 @@ + * @param destination + * @return true if teleportation was successful + */ -+ public boolean teleportOffline(@NotNull org.bukkit.Location destination); ++ boolean teleportOffline(org.bukkit.Location destination); + + /** + * Sets OfflinePlayer's location. If player is online, it falls back to the Player#teleport implementation. @@ -85,7 +85,7 @@ + * @param cause Teleport cause used if player is online + * @return true if teleportation was successful + */ -+ public boolean teleportOffline(@NotNull org.bukkit.Location destination, @NotNull org.bukkit.event.player.PlayerTeleportEvent.TeleportCause cause); ++ boolean teleportOffline(org.bukkit.Location destination, org.bukkit.event.player.PlayerTeleportEvent.TeleportCause cause); + + /** + * Sets OfflinePlayer's location. If player is online, it falls back to the Player#teleportAsync implementation. @@ -93,8 +93,7 @@ + * @param destination + * @return true if teleportation successful + */ -+ @NotNull -+ public java.util.concurrent.CompletableFuture teleportOfflineAsync(@NotNull Location destination); ++ java.util.concurrent.CompletableFuture teleportOfflineAsync(Location destination); + + /** + * Sets OfflinePlayer's location. If player is online, it falls back to the Player#teleportAsync implementation. @@ -103,7 +102,6 @@ + * @param cause Teleport cause used if player is online + * @return true if teleportation successful + */ -+ @NotNull -+ public java.util.concurrent.CompletableFuture teleportOfflineAsync(@NotNull Location destination, @NotNull org.bukkit.event.player.PlayerTeleportEvent.TeleportCause cause); ++ java.util.concurrent.CompletableFuture teleportOfflineAsync(Location destination, org.bukkit.event.player.PlayerTeleportEvent.TeleportCause cause); + // Purpur end - OfflinePlayer API } diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Server.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Server.java.patch index b149d0c27..79f8d8411 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Server.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Server.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2654,4 +_,111 @@ +@@ -2658,4 +_,111 @@ */ void allowPausing(@NotNull org.bukkit.plugin.Plugin plugin, boolean value); // Paper end - API to check if the server is sleeping diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch index efdb19897..ed10b708d 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch @@ -1,9 +1,9 @@ --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3928,4 +_,123 @@ +@@ -3902,4 +_,123 @@ * @return the result of this method, holding leftovers and spawned items. */ - @NotNull PlayerGiveResult give(@NotNull Collection<@NotNull ItemStack> items, boolean dropIfFull); + PlayerGiveResult give(Collection items, boolean dropIfFull); + + // Purpur start + /** @@ -11,7 +11,7 @@ + * + * @return true if player uses PurpurClient + */ -+ public boolean usesPurpurClient(); ++ boolean usesPurpurClient(); + + /** + * Check if player is AFK @@ -40,7 +40,7 @@ + * @param location Location to highlight + * @param duration Duration for highlight to show in milliseconds + */ -+ void sendBlockHighlight(@NotNull Location location, int duration); ++ void sendBlockHighlight(Location location, int duration); + + /** + * Creates debug block highlight on specified block location and show it to this player. @@ -50,7 +50,7 @@ + * @param duration Duration for highlight to show in milliseconds + * @param argb Color of the highlight. ARGB int. Will be ignored on some versions of vanilla client + */ -+ void sendBlockHighlight(@NotNull Location location, int duration, int argb); ++ void sendBlockHighlight(Location location, int duration, int argb); + + /** + * Creates debug block highlight on specified block location and show it to this player. @@ -60,7 +60,7 @@ + * @param duration Duration for highlight to show in milliseconds + * @param text Text to show above the highlight + */ -+ void sendBlockHighlight(@NotNull Location location, int duration, @NotNull String text); ++ void sendBlockHighlight(Location location, int duration, String text); + + /** + * Creates debug block highlight on specified block location and show it to this player. @@ -71,7 +71,7 @@ + * @param text Text to show above the highlight + * @param argb Color of the highlight. ARGB int. Will be ignored on some versions of vanilla client + */ -+ void sendBlockHighlight(@NotNull Location location, int duration, @NotNull String text, int argb); ++ void sendBlockHighlight(Location location, int duration, String text, int argb); + + /** + * Creates debug block highlight on specified block location and show it to this player. @@ -83,7 +83,7 @@ + * @param transparency Transparency of the highlight + * @throws IllegalArgumentException If transparency is outside 0-255 range + */ -+ void sendBlockHighlight(@NotNull Location location, int duration, @NotNull org.bukkit.Color color, int transparency); ++ void sendBlockHighlight(Location location, int duration, org.bukkit.Color color, int transparency); + + /** + * Creates debug block highlight on specified block location and show it to this player. @@ -96,7 +96,7 @@ + * @param transparency Transparency of the highlight + * @throws IllegalArgumentException If transparency is outside 0-255 range + */ -+ void sendBlockHighlight(@NotNull Location location, int duration, @NotNull String text, @NotNull org.bukkit.Color color, int transparency); ++ void sendBlockHighlight(Location location, int duration, String text, org.bukkit.Color color, int transparency); + + /** + * Clears all debug block highlights @@ -108,7 +108,7 @@ + * + * @param message The death message to show the player + */ -+ void sendDeathScreen(@NotNull net.kyori.adventure.text.Component message); ++ void sendDeathScreen(net.kyori.adventure.text.Component message); + + /** + * Sends a player the death screen with a specified death message, @@ -119,7 +119,7 @@ + * @deprecated Use {@link #sendDeathScreen(net.kyori.adventure.text.Component)} instead, as 1.20 removed the killer ID from the packet. + */ + @Deprecated(since = "1.20") -+ default void sendDeathScreen(@NotNull net.kyori.adventure.text.Component message, @Nullable Entity killer) { ++ default void sendDeathScreen(net.kyori.adventure.text.Component message, @Nullable Entity killer) { + sendDeathScreen(message); + } + // Purpur end diff --git a/purpur-server/minecraft-patches/features/0013-Make-entity-breeding-times-configurable.patch b/purpur-server/minecraft-patches/features/0013-Make-entity-breeding-times-configurable.patch index be0ec1071..24adce9ed 100644 --- a/purpur-server/minecraft-patches/features/0013-Make-entity-breeding-times-configurable.patch +++ b/purpur-server/minecraft-patches/features/0013-Make-entity-breeding-times-configurable.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Make entity breeding times configurable diff --git a/net/minecraft/world/entity/ai/behavior/VillagerMakeLove.java b/net/minecraft/world/entity/ai/behavior/VillagerMakeLove.java -index 4fb63e58eac5d67fcd31c3233dca1dae72b98bc4..dd8d315eba203db121e24e3402f2117fc0f3043f 100644 +index 8fe5bd54b5a4848da1f08ea65fe2bc3514bed8c8..54eeb72b638127b180470887a3b59d55773f3bc9 100644 --- a/net/minecraft/world/entity/ai/behavior/VillagerMakeLove.java +++ b/net/minecraft/world/entity/ai/behavior/VillagerMakeLove.java @@ -118,8 +118,10 @@ public class VillagerMakeLove extends Behavior { @@ -19,10 +19,10 @@ index 4fb63e58eac5d67fcd31c3233dca1dae72b98bc4..dd8d315eba203db121e24e3402f2117f + partner.setAge(level.purpurConfig.villagerBreedingTicks); + // Purpur end - Make entity breeding times configurable level.addFreshEntityWithPassengers(breedOffspring, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BREEDING); - // CraftBukkit end + // CraftBukkit end - call EntityBreedEvent level.broadcastEntityEvent(breedOffspring, (byte)12); diff --git a/net/minecraft/world/entity/animal/Animal.java b/net/minecraft/world/entity/animal/Animal.java -index 33c3752be451508343cad83766da7c3be1822d02..fa34e7f1c20dfd569b52a9c8e0a8d4d5e659ce20 100644 +index da1f5dcc213b9a5f8d26a546e7575b063fb0473c..452270f7f1c54ca98c34dcf9a9d29acae77737c8 100644 --- a/net/minecraft/world/entity/animal/Animal.java +++ b/net/minecraft/world/entity/animal/Animal.java @@ -40,6 +40,7 @@ public abstract class Animal extends AgeableMob { @@ -33,10 +33,10 @@ index 33c3752be451508343cad83766da7c3be1822d02..fa34e7f1c20dfd569b52a9c8e0a8d4d5 protected Animal(EntityType entityType, Level level) { super(entityType, level); -@@ -279,8 +280,10 @@ public abstract class Animal extends AgeableMob { +@@ -282,8 +283,10 @@ public abstract class Animal extends AgeableMob { player.awardStat(Stats.ANIMALS_BRED); CriteriaTriggers.BRED_ANIMALS.trigger(player, this, animal, baby); - } // Paper + } // Paper - call EntityBreedEvent - this.setAge(6000); - animal.setAge(6000); + // Purpur start - Make entity breeding times configurable @@ -47,7 +47,7 @@ index 33c3752be451508343cad83766da7c3be1822d02..fa34e7f1c20dfd569b52a9c8e0a8d4d5 animal.resetLove(); level.broadcastEntityEvent(this, (byte)18); diff --git a/net/minecraft/world/entity/animal/Bee.java b/net/minecraft/world/entity/animal/Bee.java -index c150ba5f706b3dd51925533300c0432ccf5e2b81..6f0b927101f9b5a07a0b6749557f6b0ebf35ae64 100644 +index a6dfd2013312d7542cb597a6e3976c68e9971148..31854506641874bed3306b9688d71e5c47fd9e35 100644 --- a/net/minecraft/world/entity/animal/Bee.java +++ b/net/minecraft/world/entity/animal/Bee.java @@ -480,6 +480,13 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { @@ -119,7 +119,7 @@ index d2a4bfa5334f7361067e4adac36ba5a4a4fa6ad8..e4965300eb41512d03a0b111422c9862 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/animal/Fox.java b/net/minecraft/world/entity/animal/Fox.java -index 8bf893837586ae2a9b4ef7564d242e16e4863b5d..1acf9b8c9e6a5915b3f095e83d3f209708947093 100644 +index 9b8f5049b7a73b6b51ea76ed92228ff0d53b1cfb..7bc31391b0bd696ce73223d639a96278994010ca 100644 --- a/net/minecraft/world/entity/animal/Fox.java +++ b/net/minecraft/world/entity/animal/Fox.java @@ -175,6 +175,13 @@ public class Fox extends Animal implements VariantHolder { @@ -136,7 +136,7 @@ index 8bf893837586ae2a9b4ef7564d242e16e4863b5d..1acf9b8c9e6a5915b3f095e83d3f2097 @Override protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); -@@ -969,8 +976,10 @@ public class Fox extends Animal implements VariantHolder { +@@ -973,8 +980,10 @@ public class Fox extends Animal implements VariantHolder { CriteriaTriggers.BRED_ANIMALS.trigger(serverPlayer, this.animal, this.partner, fox); } @@ -168,7 +168,7 @@ index 990723c31aa1040a4e45b9857a18d86287ef91b4..a64b609bf5ce38a252bfa1bcff869f88 public float getWalkTargetValue(BlockPos pos, LevelReader level) { return level.getBlockState(pos.below()).is(Blocks.MYCELIUM) ? 10.0F : level.getPathfindingCostFromLightLevels(pos); diff --git a/net/minecraft/world/entity/animal/Ocelot.java b/net/minecraft/world/entity/animal/Ocelot.java -index 1346556aa3a704930f1d278b65c6a2a904e41488..c76dff55f28f63be407c438f0c6ed634185d7b6b 100644 +index 41c42ecbf6aa233bd82000a4bbba3b186cca6a9d..b06697fd64a8962133f0324b2c03b9e9b4f32086 100644 --- a/net/minecraft/world/entity/animal/Ocelot.java +++ b/net/minecraft/world/entity/animal/Ocelot.java @@ -87,6 +87,13 @@ public class Ocelot extends Animal { @@ -312,7 +312,7 @@ index 4f0fbbb2caeda6d1477d3297fd68f802e4f3a9ca..edbccb7ca27aa8a1917eb8b35b3ba860 this.entityData.set(HOME_POS, homePos); } diff --git a/net/minecraft/world/entity/animal/Wolf.java b/net/minecraft/world/entity/animal/Wolf.java -index 93a0fda3a2f3598c9f5606e4f379b60a2129a07b..136f2c43272e5a45e473b66656818ed88de1cff3 100644 +index afc12968313a408e8a71a20c2c0defde52605c4e..9d79946497cfc92ff11160b86d5064d86916af36 100644 --- a/net/minecraft/world/entity/animal/Wolf.java +++ b/net/minecraft/world/entity/animal/Wolf.java @@ -210,6 +210,13 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder> { +@@ -165,6 +165,13 @@ public class Frog extends Animal implements VariantHolder> { } // Purpur end - Ridables @@ -397,11 +397,12 @@ index 9a400c8bf2b54aa5fbcbe65b61670cac5fbebf05..c4ea9485294b7dec2582c638802f003a + return this.level().purpurConfig.frogBreedingTicks; + } + // Purpur end - Make entity breeding times configurable ++ @Override protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/net/minecraft/world/entity/animal/goat/Goat.java b/net/minecraft/world/entity/animal/goat/Goat.java -index 9924a39953fb49954d02c771ae1a51411226ceac..16fe9367466372eb7cd0ecf24ba5b7cbc64a820c 100644 +index 302208b566038a3a352ca867dd70a61887bac104..0a018dbfe3750cf91892d8cfb5c0eac18e83d587 100644 --- a/net/minecraft/world/entity/animal/goat/Goat.java +++ b/net/minecraft/world/entity/animal/goat/Goat.java @@ -128,6 +128,13 @@ public class Goat extends Animal { @@ -581,12 +582,12 @@ index be0dc92bf5ae3da1368a649e9c4e7ff5dbb1c67c..f36e94437b4e21961532ac9ab9176761 EntityType entityType, LevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index 54924cd7c84cbcd22ffc0bd37fc24f24e73c18bc..266d1838e6602ef6322c15732f2693a865911f2e 100644 +index 54924cd7c84cbcd22ffc0bd37fc24f24e73c18bc..5af04c4d58d59b795c3f43eeb30232ab07a4e8c7 100644 --- a/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -@@ -122,6 +122,13 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { - this.timeInOverworld = timeInOverworld; +@@ -117,6 +117,13 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { } + // Purpur end - Configurable entity base attributes + // Purpur start - Make entity breeding times configurable + @Override @@ -595,6 +596,6 @@ index 54924cd7c84cbcd22ffc0bd37fc24f24e73c18bc..266d1838e6602ef6322c15732f2693a8 + } + // Purpur end - Make entity breeding times configurable + - @Override - public boolean canBeLeashed() { - return true; + @VisibleForTesting + public void setTimeInOverworld(int timeInOverworld) { + this.timeInOverworld = timeInOverworld; diff --git a/purpur-server/minecraft-patches/features/0018-Toggle-for-water-sensitive-mob-damage.patch b/purpur-server/minecraft-patches/features/0018-Toggle-for-water-sensitive-mob-damage.patch index d470623fe..426f0ac07 100644 --- a/purpur-server/minecraft-patches/features/0018-Toggle-for-water-sensitive-mob-damage.patch +++ b/purpur-server/minecraft-patches/features/0018-Toggle-for-water-sensitive-mob-damage.patch @@ -158,7 +158,7 @@ index 5b764c686e8759a7b04a7b50708c69629be02c04..e104058b3c01bea4cc8a77de2ad43784 @Override public SpawnGroupData finalizeSpawn( diff --git a/net/minecraft/world/entity/animal/Fox.java b/net/minecraft/world/entity/animal/Fox.java -index 3d94d5c9ecab0fe7332daf4cdac879385159eaa1..22a70c6af965114e272bb56cb217f975a3cd1bd4 100644 +index 950bf1c834111e00a3f3eda1390da7ede177ae15..59695ebc6758cbbc444f23ffdf2f7d66cff54430 100644 --- a/net/minecraft/world/entity/animal/Fox.java +++ b/net/minecraft/world/entity/animal/Fox.java @@ -182,6 +182,13 @@ public class Fox extends Animal implements VariantHolder { @@ -1101,7 +1101,7 @@ index f36e94437b4e21961532ac9ab91767617f9c3c32..d01bc46d77340b10b23d0c0d50bddc37 @Override diff --git a/net/minecraft/world/entity/monster/Vex.java b/net/minecraft/world/entity/monster/Vex.java -index 8356906b2c0707e21021bb05f9ca01a95682880a..ffdb200d9716104f8df91dbeef590b2264e587b8 100644 +index f0fe810d4ee2387b6b37c391e0c2feaa52b05c05..20f78e3a37f4c7257b32f2279a6404415aa00e2c 100644 --- a/net/minecraft/world/entity/monster/Vex.java +++ b/net/minecraft/world/entity/monster/Vex.java @@ -110,6 +110,13 @@ public class Vex extends Monster implements TraceableEntity { @@ -1245,10 +1245,10 @@ index 9603589e0501feee900cd21b04eb84b02bb45de2..09c991d8e344f11bc84dea453042ee35 public void setPersistentAngerTarget(@Nullable UUID target) { this.persistentAngerTarget = target; diff --git a/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index 266d1838e6602ef6322c15732f2693a865911f2e..896bd531a5333d6dc8996bbdfc5c878b1a7d2da0 100644 +index 5af04c4d58d59b795c3f43eeb30232ab07a4e8c7..9b82be9ec52fd4bc3b85e8289e7e8f9b79b74b9a 100644 --- a/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -@@ -129,6 +129,13 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -124,6 +124,13 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { } // Purpur end - Make entity breeding times configurable @@ -1259,9 +1259,9 @@ index 266d1838e6602ef6322c15732f2693a865911f2e..896bd531a5333d6dc8996bbdfc5c878b + } + // Purpur end - Toggle for water sensitive mob damage + - @Override - public boolean canBeLeashed() { - return true; + @VisibleForTesting + public void setTimeInOverworld(int timeInOverworld) { + this.timeInOverworld = timeInOverworld; diff --git a/net/minecraft/world/entity/monster/piglin/Piglin.java b/net/minecraft/world/entity/monster/piglin/Piglin.java index d923a424e2b33b7d4e9e4ecdce8e0a8c825038de..55ebfa5df06a59203248514d10dced9660ebf215 100644 --- a/net/minecraft/world/entity/monster/piglin/Piglin.java diff --git a/purpur-server/minecraft-patches/features/0021-Mobs-always-drop-experience.patch b/purpur-server/minecraft-patches/features/0021-Mobs-always-drop-experience.patch index 19907a4c1..e9f4d0ddd 100644 --- a/purpur-server/minecraft-patches/features/0021-Mobs-always-drop-experience.patch +++ b/purpur-server/minecraft-patches/features/0021-Mobs-always-drop-experience.patch @@ -149,7 +149,7 @@ index e104058b3c01bea4cc8a77de2ad4378465903b34..7003b532182737a745491e397a967b72 @Override public SpawnGroupData finalizeSpawn( diff --git a/net/minecraft/world/entity/animal/Fox.java b/net/minecraft/world/entity/animal/Fox.java -index 22a70c6af965114e272bb56cb217f975a3cd1bd4..aa610af9db105081fcabc1f299e5f2dd1f4d907e 100644 +index 59695ebc6758cbbc444f23ffdf2f7d66cff54430..90452f0945e761077608692877677f522d38bccd 100644 --- a/net/minecraft/world/entity/animal/Fox.java +++ b/net/minecraft/world/entity/animal/Fox.java @@ -189,6 +189,13 @@ public class Fox extends Animal implements VariantHolder { @@ -887,7 +887,7 @@ index bf26f5f6017c60d5991d5f6c87da2acbd95ef5bb..312d4a3d312b5c326d6ca13ccfc48171 return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, 0.2F); } diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java -index 0ee817699fffbb929011465029182cc56befc30c..39f94cee78e8fc14d892cb64fb5234bf88d964ad 100644 +index 41ae39349c6f7e6c5d0187257a72782c5dc4c8eb..3c105d164acd9e45de2335ef28ddecf3fa48d267 100644 --- a/net/minecraft/world/entity/monster/Phantom.java +++ b/net/minecraft/world/entity/monster/Phantom.java @@ -157,6 +157,13 @@ public class Phantom extends FlyingMob implements Enemy { @@ -1067,7 +1067,7 @@ index d01bc46d77340b10b23d0c0d50bddc37657028c8..241526239bdbd5d9276f85e7fca46a70 EntityType entityType, LevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/Vex.java b/net/minecraft/world/entity/monster/Vex.java -index ffdb200d9716104f8df91dbeef590b2264e587b8..0ce9eb1f4108b6afab6df84d5e709be0882e515a 100644 +index 20f78e3a37f4c7257b32f2279a6404415aa00e2c..0d9dd9919b2b9902137df861bcac8057e4b741de 100644 --- a/net/minecraft/world/entity/monster/Vex.java +++ b/net/minecraft/world/entity/monster/Vex.java @@ -117,6 +117,13 @@ public class Vex extends Monster implements TraceableEntity { @@ -1211,10 +1211,10 @@ index 09c991d8e344f11bc84dea453042ee35c39e580e..fddbbffafea275dad187b7908386cf4c public void setPersistentAngerTarget(@Nullable UUID target) { this.persistentAngerTarget = target; diff --git a/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index 896bd531a5333d6dc8996bbdfc5c878b1a7d2da0..cf0a15ff4a49bcc17dc6dd58e91eadec0c519455 100644 +index 9b82be9ec52fd4bc3b85e8289e7e8f9b79b74b9a..28f3bc31b4c093e426ae141edeee61a12a444ba1 100644 --- a/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -@@ -136,6 +136,13 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -131,6 +131,13 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { } // Purpur end - Toggle for water sensitive mob damage @@ -1225,9 +1225,9 @@ index 896bd531a5333d6dc8996bbdfc5c878b1a7d2da0..cf0a15ff4a49bcc17dc6dd58e91eadec + } + // Purpur end - Mobs always drop experience + - @Override - public boolean canBeLeashed() { - return true; + @VisibleForTesting + public void setTimeInOverworld(int timeInOverworld) { + this.timeInOverworld = timeInOverworld; diff --git a/net/minecraft/world/entity/monster/piglin/Piglin.java b/net/minecraft/world/entity/monster/piglin/Piglin.java index 55ebfa5df06a59203248514d10dced9660ebf215..f0d78cf5fe2c39add9a673471103c352cce72a45 100644 --- a/net/minecraft/world/entity/monster/piglin/Piglin.java diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch index 7a5ade3e0..3d6674d0b 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch @@ -106,7 +106,7 @@ @Override public List getRecipesFor(ItemStack result) { Preconditions.checkArgument(result != null, "ItemStack cannot be null"); -@@ -3055,6 +_,18 @@ +@@ -3045,6 +_,18 @@ return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console); } @@ -125,7 +125,7 @@ @Override public void restart() { org.spigotmc.RestartCommand.restart(); -@@ -3084,6 +_,7 @@ +@@ -3074,6 +_,7 @@ @Override public double[] getTPS() { return new double[] { @@ -133,7 +133,7 @@ net.minecraft.server.MinecraftServer.getServer().tps1.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps5.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps15.getAverage() -@@ -3294,4 +_,18 @@ +@@ -3284,4 +_,18 @@ this.console.addPluginAllowingSleep(plugin.getName(), value); } // Paper end - API to check if the server is sleeping