diff --git a/patches/unapplied-server/0251-Config-to-not-let-coral-die.patch b/patches/server/0241-Config-to-not-let-coral-die.patch similarity index 94% rename from patches/unapplied-server/0251-Config-to-not-let-coral-die.patch rename to patches/server/0241-Config-to-not-let-coral-die.patch index 42fbf00c7..48716dc20 100644 --- a/patches/unapplied-server/0251-Config-to-not-let-coral-die.patch +++ b/patches/server/0241-Config-to-not-let-coral-die.patch @@ -29,10 +29,10 @@ index 81fe0dea8e6e23c4a78f07fc2f9c0d68cd683f11..bff97b7d3909f2ec9e58a341b901b374 int i = aenumdirection.length; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6dc3d5a420005a859560ebb85009183b446a0531..9e884018d72ad9b63b8968551223451ecc09b547 100644 +index 6441a55bda07bacd23918a7cb74cacbfe45688ae..55d6232d50dd48080aec705512c791c86dae8c93 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -913,6 +913,11 @@ public class PurpurWorldConfig { +@@ -894,6 +894,11 @@ public class PurpurWorldConfig { composterBulkProcess = getBoolean("blocks.composter.sneak-to-bulk-process", composterBulkProcess); } diff --git a/patches/unapplied-server/0252-Add-local-difficulty-api.patch b/patches/server/0242-Add-local-difficulty-api.patch similarity index 86% rename from patches/unapplied-server/0252-Add-local-difficulty-api.patch rename to patches/server/0242-Add-local-difficulty-api.patch index a83b263a8..bbd1e7557 100644 --- a/patches/unapplied-server/0252-Add-local-difficulty-api.patch +++ b/patches/server/0242-Add-local-difficulty-api.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add local difficulty api diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 6303760f10af17f1da1d92d6c4dc7dd6f5778f94..60924e7fbba91819f0794a44f0777158962f0d3f 100644 +index fc38d65914143aaf93aa85badf3adcdfe4dda1b5..adb914317183148ecab6c8ab7c4ce65d3400434e 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2449,6 +2449,12 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2373,6 +2373,12 @@ public class CraftWorld extends CraftRegionAccessor implements World { return (this.getHandle().getDragonFight() == null) ? null : new CraftDragonBattle(this.getHandle().getDragonFight()); } diff --git a/patches/unapplied-server/0253-Add-toggle-for-RNG-manipulation.patch b/patches/server/0243-Add-toggle-for-RNG-manipulation.patch similarity index 83% rename from patches/unapplied-server/0253-Add-toggle-for-RNG-manipulation.patch rename to patches/server/0243-Add-toggle-for-RNG-manipulation.patch index 4130a3e2d..228ec32d5 100644 --- a/patches/unapplied-server/0253-Add-toggle-for-RNG-manipulation.patch +++ b/patches/server/0243-Add-toggle-for-RNG-manipulation.patch @@ -7,10 +7,10 @@ Paper patches RNG maniplulation by using a shared (and locked) random source. This comes with a performance gain, but technical players may prefer the ability to manipulate RNG. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 888e44f730725e6dee0a1414a3e75538dda87c14..13f69b9ceb082a013dfe2de2d5807dde77d53a2f 100644 +index 3ba86e5b66ff4d3d4c8675f9b084b91ab034eeb4..7e94f52f4086331401e35b6814709054e26d85b6 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -596,7 +596,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -485,7 +485,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.bb = Entity.INITIAL_AABB; this.stuckSpeedMultiplier = Vec3.ZERO; this.nextStep = 1.0F; @@ -20,10 +20,10 @@ index 888e44f730725e6dee0a1414a3e75538dda87c14..13f69b9ceb082a013dfe2de2d5807dde this.fluidHeight = new Object2DoubleArrayMap(2); this.fluidOnEyes = new HashSet(); 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 b86676ebcd6c301e5dd857d8e84e1db2c1da416b..cb950ba3ee3bdfe0ff7acdb94c7ee233d73ab22e 100644 +index b9c8fe36c6a6256097ea69383bef678bbfb6c45b..8ec27ee82cd6f31bee722852c5fc6e7ca64a3a77 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java -@@ -42,7 +42,7 @@ public class Squid extends WaterAnimal { +@@ -41,7 +41,7 @@ public class Squid extends WaterAnimal { public Squid(EntityType type, Level world) { super(type, world); @@ -33,10 +33,10 @@ index b86676ebcd6c301e5dd857d8e84e1db2c1da416b..cb950ba3ee3bdfe0ff7acdb94c7ee233 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e1e22c05b263c9fd4c2d58d5b75f5fbd0025e76f..fdc2b8823acf81f10b3502335eb93a480b69d328 100644 +index 55d6232d50dd48080aec705512c791c86dae8c93..bd48c162844d3aaa194476eb6b6c2647ec2a7316 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -212,9 +212,11 @@ public class PurpurWorldConfig { +@@ -208,9 +208,11 @@ public class PurpurWorldConfig { public int entityLifeSpan = 0; public float entityLeftHandedChance = 0.05f; @@ -47,4 +47,4 @@ index e1e22c05b263c9fd4c2d58d5b75f5fbd0025e76f..fdc2b8823acf81f10b3502335eb93a48 + entitySharedRandom = getBoolean("settings.entity.shared-random", entitySharedRandom); } - public boolean infinityWorksWithoutArrows = false; + public List itemImmuneToCactus = new ArrayList<>(); diff --git a/patches/unapplied-server/0256-Add-more-logger-output-for-invalid-movement-kicks.patch b/patches/server/0244-Add-more-logger-output-for-invalid-movement-kicks.patch similarity index 71% rename from patches/unapplied-server/0256-Add-more-logger-output-for-invalid-movement-kicks.patch rename to patches/server/0244-Add-more-logger-output-for-invalid-movement-kicks.patch index 90fbc22da..d3310548d 100644 --- a/patches/unapplied-server/0256-Add-more-logger-output-for-invalid-movement-kicks.patch +++ b/patches/server/0244-Add-more-logger-output-for-invalid-movement-kicks.patch @@ -5,18 +5,18 @@ Subject: [PATCH] Add more logger output for invalid movement kicks diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index a3e29942d3db9e5e63c839b4e32394639f60b680..478f3bba5e0768c8ab800d7cb591f07db1bc20da 100644 +index c1f345fed7c5f95a87e3cc74e8ec200fcc49e777..44baee03b15c710f06f0d255e3102393d4c172f5 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -753,6 +753,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -721,6 +721,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl + PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); if (packet.getId() == this.awaitingTeleport) { if (this.awaitingPositionFromClient == null) { - this.disconnect(Component.translatable("multiplayer.disconnect.invalid_player_movement"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PLAYER_MOVEMENT); // Paper - kick event cause + ServerGamePacketListenerImpl.LOGGER.warn("Disconnected on accept teleport packet. Was not expecting position data from client at this time"); // Purpur + this.disconnect((Component) Component.translatable("multiplayer.disconnect.invalid_player_movement"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PLAYER_MOVEMENT); // Paper - kick event cause return; } - -@@ -1358,8 +1359,16 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1327,7 +1328,15 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @Override public void handleMovePlayer(ServerboundMovePlayerPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); @@ -28,9 +28,8 @@ index a3e29942d3db9e5e63c839b4e32394639f60b680..478f3bba5e0768c8ab800d7cb591f07d + boolean invalidYaw = !Floats.isFinite(packet.getYRot(0.0F)); + boolean invalidPitch = !Floats.isFinite(packet.getXRot(0.0F)); + if (invalidX || invalidY || invalidZ || invalidYaw || invalidPitch) { - this.disconnect(Component.translatable("multiplayer.disconnect.invalid_player_movement"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PLAYER_MOVEMENT); // Paper - kick event cause -+ ServerGamePacketListenerImpl.LOGGER.warn(String.format("Disconnected on move player packet. Invalid data: x=%b, y=%b, z=%b, yaw=%b, pitch=%b", invalidX, invalidY, invalidZ, invalidYaw, invalidPitch)); -+ // Purpur end ++ ServerGamePacketListenerImpl.LOGGER.warn(String.format("Disconnected on move player packet. Invalid data: x=%b, y=%b, z=%b, yaw=%b, pitch=%b", invalidX, invalidY, invalidZ, invalidYaw, invalidPitch)); // Purpur ++ // Purpur end + this.disconnect((Component) Component.translatable("multiplayer.disconnect.invalid_player_movement"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PLAYER_MOVEMENT); // Paper - kick event cause } else { ServerLevel worldserver = this.player.serverLevel(); - diff --git a/patches/unapplied-server/0257-Add-Bee-API.patch b/patches/server/0245-Add-Bee-API.patch similarity index 89% rename from patches/unapplied-server/0257-Add-Bee-API.patch rename to patches/server/0245-Add-Bee-API.patch index b09f65216..94e4182ec 100644 --- a/patches/unapplied-server/0257-Add-Bee-API.patch +++ b/patches/server/0245-Add-Bee-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add Bee API 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 221c0051c7a0e20c1b7a464df26eb63c4e997eee..539170813921de2dfcd7ef84dd7512d73cd27e68 100644 +index 0dfdecff129a6b34833eb3fb7d7d967b131531ff..0422c4184c4823b8572afd398ef96fc6054e8485 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java -@@ -797,6 +797,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -808,6 +808,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { if (optional.isPresent()) { Bee.this.savedFlowerPos = (BlockPos) optional.get(); Bee.this.navigation.moveTo((double) Bee.this.savedFlowerPos.getX() + 0.5D, (double) Bee.this.savedFlowerPos.getY() + 0.5D, (double) Bee.this.savedFlowerPos.getZ() + 0.5D, 1.2000000476837158D); @@ -16,7 +16,7 @@ index 221c0051c7a0e20c1b7a464df26eb63c4e997eee..539170813921de2dfcd7ef84dd7512d7 return true; } else { Bee.this.remainingCooldownBeforeLocatingNewFlower = Mth.nextInt(Bee.this.random, 20, 60); -@@ -853,6 +854,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -864,6 +865,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { this.pollinating = false; Bee.this.navigation.stop(); Bee.this.remainingCooldownBeforeLocatingNewFlower = 200; @@ -24,7 +24,7 @@ index 221c0051c7a0e20c1b7a464df26eb63c4e997eee..539170813921de2dfcd7ef84dd7512d7 } @Override -@@ -899,6 +901,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -910,6 +912,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { this.setWantedPos(); } diff --git a/patches/unapplied-server/0258-Debug-Marker-API.patch b/patches/server/0246-Debug-Marker-API.patch similarity index 93% rename from patches/unapplied-server/0258-Debug-Marker-API.patch rename to patches/server/0246-Debug-Marker-API.patch index b385954c2..b8d6fd454 100644 --- a/patches/unapplied-server/0258-Debug-Marker-API.patch +++ b/patches/server/0246-Debug-Marker-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Debug Marker API diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 8cdc91d8306a76514abd76c450044ffed5418787..c5d090fbe48b823c6598b52cd51e81aff0aa17c5 100644 +index 8632ef169eab32caca3a6d89011c37e81345b7d0..dedf510a5942aaa65a606d108d4082e87add5523 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1605,6 +1605,42 @@ public final class CraftServer implements Server { +@@ -1609,6 +1609,42 @@ public final class CraftServer implements Server { public void removeFuel(org.bukkit.Material material) { net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity.removeFuel(net.minecraft.world.item.ItemStack.fromBukkitCopy(new ItemStack(material))); } @@ -52,10 +52,10 @@ index 8cdc91d8306a76514abd76c450044ffed5418787..c5d090fbe48b823c6598b52cd51e81af @Override diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 60924e7fbba91819f0794a44f0777158962f0d3f..523a6afd7f1dcb0b4ddf5ede0415487c104296bc 100644 +index adb914317183148ecab6c8ab7c4ce65d3400434e..415c87f2ead5cfa5f8d63d125596aa60581c561a 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2453,6 +2453,42 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2377,6 +2377,42 @@ public class CraftWorld extends CraftRegionAccessor implements World { public float getLocalDifficultyAt(Location location) { return getHandle().getCurrentDifficultyAt(io.papermc.paper.util.MCUtil.toBlockPosition(location)).getEffectiveDifficulty(); } @@ -99,10 +99,10 @@ index 60924e7fbba91819f0794a44f0777158962f0d3f..523a6afd7f1dcb0b4ddf5ede0415487c @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 731e879a3c7c9c4c5199216ec1033bc8001b6460..69f39d2df0fac329881401bc5b0391c18eb38096 100644 +index f4c1b3184afa8803a6dcdc63fa79f8d724ccefab..a51cfed20f938364d0b087ddbabcfc83719a9de1 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3580,5 +3580,43 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3582,5 +3582,43 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public void resetIdleTimer() { getHandle().resetLastActionTime(); } diff --git a/patches/unapplied-server/0259-mob-spawning-option-to-ignore-creative-players.patch b/patches/server/0247-mob-spawning-option-to-ignore-creative-players.patch similarity index 86% rename from patches/unapplied-server/0259-mob-spawning-option-to-ignore-creative-players.patch rename to patches/server/0247-mob-spawning-option-to-ignore-creative-players.patch index e7d688571..6bbe89088 100644 --- a/patches/unapplied-server/0259-mob-spawning-option-to-ignore-creative-players.patch +++ b/patches/server/0247-mob-spawning-option-to-ignore-creative-players.patch @@ -5,10 +5,10 @@ Subject: [PATCH] mob spawning option to ignore creative players diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -index 35e94c06361795d032f995e8282f8b35c075dae7..0f90a6803851eba51e164772c984b1cd1193d882 100644 +index ea6533c1ac218aa075da3401807a06fcb7892321..3fffaf0876bde3487e990510debeb31913d390b4 100644 --- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java +++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -@@ -253,7 +253,7 @@ public final class NaturalSpawner { +@@ -208,7 +208,7 @@ public final class NaturalSpawner { blockposition_mutableblockposition.set(l, i, i1); double d0 = (double) l + 0.5D; double d1 = (double) i1 + 0.5D; @@ -18,10 +18,10 @@ index 35e94c06361795d032f995e8282f8b35c075dae7..0f90a6803851eba51e164772c984b1cd if (entityhuman != null) { double d2 = entityhuman.distanceToSqr(d0, (double) i, d1); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f50c26f02bc7c95f7b1228588aff68296290c21b..8763375984c9cbd9d4862a0130602e11a55292f5 100644 +index bd48c162844d3aaa194476eb6b6c2647ec2a7316..3ee77eafb36b744035e4eb0cc916ad165f100b13 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -385,6 +385,7 @@ public class PurpurWorldConfig { +@@ -370,6 +370,7 @@ public class PurpurWorldConfig { public boolean phantomSpawning; public boolean villagerTraderSpawning; public boolean villageSiegeSpawning; @@ -29,7 +29,7 @@ index f50c26f02bc7c95f7b1228588aff68296290c21b..8763375984c9cbd9d4862a0130602e11 private void mobSpawnerSettings() { // values of "default" or null will default to true only if the world environment is normal (aka overworld) Predicate predicate = (bool) -> (bool != null && bool) || (bool == null && environment == World.Environment.NORMAL); -@@ -393,6 +394,7 @@ public class PurpurWorldConfig { +@@ -378,6 +379,7 @@ public class PurpurWorldConfig { phantomSpawning = getBoolean("gameplay-mechanics.mob-spawning.phantoms", predicate); villagerTraderSpawning = getBoolean("gameplay-mechanics.mob-spawning.wandering-traders", predicate); villageSiegeSpawning = getBoolean("gameplay-mechanics.mob-spawning.village-sieges", predicate); diff --git a/patches/unapplied-server/0260-Add-skeleton-bow-accuracy-option.patch b/patches/server/0248-Add-skeleton-bow-accuracy-option.patch similarity index 89% rename from patches/unapplied-server/0260-Add-skeleton-bow-accuracy-option.patch rename to patches/server/0248-Add-skeleton-bow-accuracy-option.patch index 4038b5b46..648562a8c 100644 --- a/patches/unapplied-server/0260-Add-skeleton-bow-accuracy-option.patch +++ b/patches/server/0248-Add-skeleton-bow-accuracy-option.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add skeleton bow accuracy option diff --git a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java -index 8515e6360c1630385884a60f652f65fdefeaf540..e80307198b051cbcd9f72b36e459276848dcb4c9 100644 +index 63cbec52bc4637a0b787cbc22041188691527def..45b09f79a0ae8b7ebdd015d6edfa1fe0fd092763 100644 --- a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java -@@ -183,7 +183,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo +@@ -185,7 +185,7 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo double d2 = target.getZ() - this.getZ(); double d3 = Math.sqrt(d0 * d0 + d2 * d2); @@ -18,10 +18,10 @@ index 8515e6360c1630385884a60f652f65fdefeaf540..e80307198b051cbcd9f72b36e4592768 org.bukkit.event.entity.EntityShootBowEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityShootBowEvent(this, this.getMainHandItem(), entityarrow.getPickupItem(), entityarrow, net.minecraft.world.InteractionHand.MAIN_HAND, 0.8F, true); // Paper if (event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8ba75ecdb350796cf2b5f8b710db78e1f741d390..ed36fe26478af919f7589e3f4543735f332dbea9 100644 +index 3ee77eafb36b744035e4eb0cc916ad165f100b13..81d3a0af4da0387fc072c015e04d51b7564f603a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2535,6 +2535,8 @@ public class PurpurWorldConfig { +@@ -2516,6 +2516,8 @@ public class PurpurWorldConfig { public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; public int skeletonFeedWitherRoses = 0; @@ -30,7 +30,7 @@ index 8ba75ecdb350796cf2b5f8b710db78e1f741d390..ed36fe26478af919f7589e3f4543735f private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2549,6 +2551,18 @@ public class PurpurWorldConfig { +@@ -2530,6 +2532,18 @@ public class PurpurWorldConfig { skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); skeletonHeadVisibilityPercent = getDouble("mobs.skeleton.head-visibility-percent", skeletonHeadVisibilityPercent); skeletonFeedWitherRoses = getInt("mobs.skeleton.feed-wither-roses", skeletonFeedWitherRoses); diff --git a/patches/unapplied-server/0261-Add-death-screen-API.patch b/patches/server/0249-Add-death-screen-API.patch similarity index 87% rename from patches/unapplied-server/0261-Add-death-screen-API.patch rename to patches/server/0249-Add-death-screen-API.patch index 36d892d3d..cfe1df606 100644 --- a/patches/unapplied-server/0261-Add-death-screen-API.patch +++ b/patches/server/0249-Add-death-screen-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add death screen API diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 69f39d2df0fac329881401bc5b0391c18eb38096..8211ec2c701687d8e5334156772cf435b89f3cb3 100644 +index a51cfed20f938364d0b087ddbabcfc83719a9de1..f36c0c33438698d7bf6e0fd6c3101b2b8e8f8fe5 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3618,5 +3618,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3620,5 +3620,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { if (this.getHandle().connection == null) return; this.getHandle().connection.send(new net.minecraft.network.protocol.common.ClientboundCustomPayloadPacket(new net.minecraft.network.protocol.common.custom.GameTestClearMarkersDebugPayload())); } diff --git a/patches/unapplied-server/0262-Implement-ram-and-rambar-commands.patch b/patches/server/0250-Implement-ram-and-rambar-commands.patch similarity index 94% rename from patches/unapplied-server/0262-Implement-ram-and-rambar-commands.patch rename to patches/server/0250-Implement-ram-and-rambar-commands.patch index 2e299a7f4..0cb3156c8 100644 --- a/patches/unapplied-server/0262-Implement-ram-and-rambar-commands.patch +++ b/patches/server/0250-Implement-ram-and-rambar-commands.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Implement ram and rambar commands diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index 5e846fe5b1b13abf10d3d36c2a78472dc2bd0e42..65ede1d284692f71bb97b814b171f47cbe877b89 100644 +index 89cfef3a5c466a8f508cce1aa37ec6b01432eb35..7bcc0f87337547f8783dd9cc8adff61187cd41d7 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java -@@ -258,6 +258,8 @@ public class Commands { +@@ -256,6 +256,8 @@ public class Commands { org.purpurmc.purpur.command.UptimeCommand.register(this.dispatcher); // Purpur org.purpurmc.purpur.command.TPSBarCommand.register(this.dispatcher); // Purpur org.purpurmc.purpur.command.CompassCommand.register(this.dispatcher); // Purpur @@ -18,18 +18,18 @@ index 5e846fe5b1b13abf10d3d36c2a78472dc2bd0e42..65ede1d284692f71bb97b814b171f47c 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 375d1532d267f4fbc735eede99eddc6f7f25103c..4a29e90ff2a0fe9c5be094400d79ab89e61c437d 100644 +index 30e642f51bbaae3a96c714a99dda43ca60cc374c..3f414fe2ead0f3ba44f48bf5d6555c65a629c447 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -301,6 +301,7 @@ public class ServerPlayer extends Player { +@@ -299,6 +299,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { public boolean purpurClient = false; // Purpur private boolean tpsBar = false; // Purpur private boolean compassBar = false; // Purpur + private boolean ramBar = false; // Purpur - // Paper start - replace player chunk loader - private final java.util.concurrent.atomic.AtomicReference viewDistances = new java.util.concurrent.atomic.AtomicReference<>(new io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances(-1, -1, -1)); -@@ -614,6 +615,7 @@ public class ServerPlayer extends Player { + public ServerPlayer(MinecraftServer server, ServerLevel world, GameProfile profile, ClientInformation clientOptions) { + super(world, world.getSharedSpawnPos(), world.getSharedSpawnAngle(), profile); +@@ -570,6 +571,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { if (nbt.contains("Purpur.TPSBar")) { this.tpsBar = nbt.getBoolean("Purpur.TPSBar"); } // Purpur if (nbt.contains("Purpur.CompassBar")) { this.compassBar = nbt.getBoolean("Purpur.CompassBar"); } // Purpur @@ -37,7 +37,7 @@ index 375d1532d267f4fbc735eede99eddc6f7f25103c..4a29e90ff2a0fe9c5be094400d79ab89 } @Override -@@ -690,6 +692,7 @@ public class ServerPlayer extends Player { +@@ -646,6 +648,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { }); } @@ -45,7 +45,7 @@ index 375d1532d267f4fbc735eede99eddc6f7f25103c..4a29e90ff2a0fe9c5be094400d79ab89 nbt.putBoolean("Purpur.TPSBar", this.tpsBar); // Purpur nbt.putBoolean("Purpur.CompassBar", this.compassBar); // Purpur } -@@ -3030,5 +3033,13 @@ public class ServerPlayer extends Player { +@@ -3058,5 +3061,13 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { public void compassBar(boolean compassBar) { this.compassBar = compassBar; } @@ -60,7 +60,7 @@ index 375d1532d267f4fbc735eede99eddc6f7f25103c..4a29e90ff2a0fe9c5be094400d79ab89 // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 9b6b21a8a74617c40c9eedfc86e59cb7fa3461f3..90bcf87bec6ea88b670a84ed2c2f078e9563a473 100644 +index bbb7afbfb84b0d8e45f6e0de61f4f3e8c9315431..0278beb0746db9a8b25eefeacbb4f8f4e5e6d38b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -182,6 +182,8 @@ public class PurpurConfig { diff --git a/patches/unapplied-server/0264-Configurable-block-blast-resistance.patch b/patches/server/0251-Configurable-block-blast-resistance.patch similarity index 74% rename from patches/unapplied-server/0264-Configurable-block-blast-resistance.patch rename to patches/server/0251-Configurable-block-blast-resistance.patch index 482d21fe3..672d60a18 100644 --- a/patches/unapplied-server/0264-Configurable-block-blast-resistance.patch +++ b/patches/server/0251-Configurable-block-blast-resistance.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable block blast resistance 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 3c1091f2a729b7d06ba6e21c37f788edb2ad1775..031fc626d2075cbe0941fecc188406712ab9953f 100644 +index 52bd9fa49649ede9d29e1c0d348cb13abf2ef1b1..ff76338659201424dcc88dfd08b6b8c2f2af593b 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 -@@ -86,7 +86,7 @@ public abstract class BlockBehaviour implements FeatureElement { +@@ -85,7 +85,7 @@ public abstract class BlockBehaviour implements FeatureElement { protected static final Direction[] UPDATE_SHAPE_ORDER = new Direction[]{Direction.WEST, Direction.EAST, Direction.NORTH, Direction.SOUTH, Direction.DOWN, Direction.UP}; public final boolean hasCollision; @@ -18,17 +18,17 @@ index 3c1091f2a729b7d06ba6e21c37f788edb2ad1775..031fc626d2075cbe0941fecc18840671 protected final SoundType soundType; protected final float friction; diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 3b3d5bd9e645f440e033abd3c234a017972efa59..b2207e2baed339adb1594f19f9a3d4a709669935 100644 +index 0278beb0746db9a8b25eefeacbb4f8f4e5e6d38b..7d33bdb2592f7977aff21804c837c9eff5827f5f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -502,4 +502,19 @@ public class PurpurConfig { - private static void fixProjectileLootingTransfer() { - fixProjectileLootingTransfer = getBoolean("settings.fix-projectile-looting-transfer", fixProjectileLootingTransfer); +@@ -488,4 +488,19 @@ public class PurpurConfig { + String setPattern = getString("settings.username-valid-characters", defaultPattern); + usernameValidCharactersPattern = java.util.regex.Pattern.compile(setPattern == null || setPattern.isBlank() ? defaultPattern : setPattern); } + + private static void blastResistanceSettings() { + getMap("settings.blast-resistance-overrides", Collections.emptyMap()).forEach((blockId, value) -> { -+ Block block = BuiltInRegistries.BLOCK.get(new ResourceLocation(blockId)); ++ Block block = BuiltInRegistries.BLOCK.get(ResourceLocation.withDefaultNamespace(blockId)); + if (block == Blocks.AIR) { + log(Level.SEVERE, "Invalid block for `settings.blast-resistance-overrides`: " + blockId); + return; diff --git a/patches/unapplied-server/0265-Configurable-block-fall-damage-modifiers.patch b/patches/server/0252-Configurable-block-fall-damage-modifiers.patch similarity index 93% rename from patches/unapplied-server/0265-Configurable-block-fall-damage-modifiers.patch rename to patches/server/0252-Configurable-block-fall-damage-modifiers.patch index 541a9698e..18a4987a7 100644 --- a/patches/unapplied-server/0265-Configurable-block-fall-damage-modifiers.patch +++ b/patches/server/0252-Configurable-block-fall-damage-modifiers.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable block fall damage modifiers diff --git a/src/main/java/net/minecraft/world/level/block/BedBlock.java b/src/main/java/net/minecraft/world/level/block/BedBlock.java -index 549e3dd09a91ddf319fe0c1ec09924cbb600c1b8..a4a988ab1399702b943019e9c4e2cde3652b4e85 100644 +index b59dd6b512021c335f3c21999958e2ea081daf69..17c994a39a1b99cc7727e328ce7493d534247a21 100644 --- a/src/main/java/net/minecraft/world/level/block/BedBlock.java +++ b/src/main/java/net/minecraft/world/level/block/BedBlock.java @@ -181,7 +181,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock @@ -18,10 +18,10 @@ index 549e3dd09a91ddf319fe0c1ec09924cbb600c1b8..a4a988ab1399702b943019e9c4e2cde3 @Override 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 7ffe51eedc9d086424cf450026bdc260249864c4..5ae3decf100d21f7d4a471c155eaf5e00e996580 100644 +index 73f2103b77795740690032084ecddc9c2a5b119e..6d012ca724f1373bcf9e8d86d22194143f56d52b 100644 --- a/src/main/java/net/minecraft/world/level/block/Block.java +++ b/src/main/java/net/minecraft/world/level/block/Block.java -@@ -89,6 +89,10 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -88,6 +88,10 @@ public class Block extends BlockBehaviour implements ItemLike { public static final int UPDATE_LIMIT = 512; protected final StateDefinition stateDefinition; private BlockState defaultBlockState; @@ -32,7 +32,7 @@ index 7ffe51eedc9d086424cf450026bdc260249864c4..5ae3decf100d21f7d4a471c155eaf5e0 // Paper start public final boolean isDestroyable() { return io.papermc.paper.configuration.GlobalConfiguration.get().unsupportedSettings.allowPermanentBlockBreakExploits || -@@ -486,7 +490,7 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -485,7 +489,7 @@ public class Block extends BlockBehaviour implements ItemLike { } public void fallOn(Level world, BlockState state, BlockPos pos, Entity entity, float fallDistance) { @@ -54,10 +54,10 @@ index ef364aa171a48482a45bc18cfe730ec20c3f7be6..74971d90506aa253d5ee821b5390fb25 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index b2207e2baed339adb1594f19f9a3d4a709669935..508b094272bede66826ad0f4908f115454b7d4f2 100644 +index 7d33bdb2592f7977aff21804c837c9eff5827f5f..3f4584ede9fc039ecdb770a0d6fcb824abc03388 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -517,4 +517,50 @@ public class PurpurConfig { +@@ -503,4 +503,50 @@ public class PurpurConfig { block.explosionResistance = blastResistance.floatValue(); }); } diff --git a/patches/unapplied-server/0266-Language-API.patch b/patches/server/0253-Language-API.patch similarity index 89% rename from patches/unapplied-server/0266-Language-API.patch rename to patches/server/0253-Language-API.patch index 6246f8a51..852e6962a 100644 --- a/patches/unapplied-server/0266-Language-API.patch +++ b/patches/server/0253-Language-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Language API diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index c5d090fbe48b823c6598b52cd51e81aff0aa17c5..07a04dcbd48430102268f8f44e9bce437214a00f 100644 +index dedf510a5942aaa65a606d108d4082e87add5523..12e4202f198ea7fe3a69d265444b8ad88bbc0ee6 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -407,6 +407,20 @@ public final class CraftServer implements Server { +@@ -410,6 +410,20 @@ public final class CraftServer implements Server { this.paperPluginManager = new io.papermc.paper.plugin.manager.PaperPluginManagerImpl(this, this.commandMap, pluginManager); this.pluginManager.paperPluginManager = this.paperPluginManager; // Paper end diff --git a/patches/unapplied-server/0267-Milk-Keeps-Beneficial-Effects.patch b/patches/server/0254-Milk-Keeps-Beneficial-Effects.patch similarity index 82% rename from patches/unapplied-server/0267-Milk-Keeps-Beneficial-Effects.patch rename to patches/server/0254-Milk-Keeps-Beneficial-Effects.patch index 6014c1a99..f720c2a8b 100644 --- a/patches/unapplied-server/0267-Milk-Keeps-Beneficial-Effects.patch +++ b/patches/server/0254-Milk-Keeps-Beneficial-Effects.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Milk Keeps Beneficial Effects diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 09cbc472d89d7d8730aedb76ef584b1ff159756b..53ff232129443ba3242cfc57fc57026bf76d96e8 100644 +index b3320e206e07a7b895fe28bcc4cc501c104bedd5..7d8b12bdbb2e86e49d92124ba8376df3ff5edc17 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1154,6 +1154,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1129,6 +1129,7 @@ public abstract class LivingEntity extends Entity implements Attackable { for (flag = false; iterator.hasNext(); flag = true) { // CraftBukkit start MobEffectInstance effect = (MobEffectInstance) iterator.next(); @@ -17,10 +17,10 @@ index 09cbc472d89d7d8730aedb76ef584b1ff159756b..53ff232129443ba3242cfc57fc57026b if (event.isCancelled()) { continue; 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 62f5e5cfe5745deced2811d14d0c7ebb2c2c6948..c1e573758539a151452b12466339ccf8b39c7d38 100644 +index 1313844a719befa96d4d8ab23505e89e8c4df2fd..0da4dbd11d2b5368e10291ca0389f08714e0c2af 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java -@@ -115,7 +115,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill +@@ -110,7 +110,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill return this.canDrinkPotion && this.level().isNight() && !entityvillagertrader.isInvisible(); // Paper - Add more WanderingTrader API })); this.goalSelector.addGoal(0, new UseItemGoal<>(this, new ItemStack(Items.MILK_BUCKET), SoundEvents.WANDERING_TRADER_REAPPEARED, (entityvillagertrader) -> { @@ -30,20 +30,20 @@ index 62f5e5cfe5745deced2811d14d0c7ebb2c2c6948..c1e573758539a151452b12466339ccf8 this.goalSelector.addGoal(1, new TradeWithPlayerGoal(this)); this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Zombie.class, 8.0F, 0.5D, 0.5D)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7b028800a99d627a9efcd2a718e281ab7a67cfad..fabe1529ca30dabb93287dfae4cc15ea8c11f69f 100644 +index 81d3a0af4da0387fc072c015e04d51b7564f603a..eaf99a0fc84372f12e2c54c9d175072abf1239b4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -128,6 +128,7 @@ public class PurpurWorldConfig { +@@ -126,6 +126,7 @@ public class PurpurWorldConfig { + public boolean entitiesPickUpLootBypassMobGriefing = false; public boolean fireballsBypassMobGriefing = false; - public boolean imposeTeleportRestrictionsOnGateways = false; public boolean milkCuresBadOmen = true; + public boolean milkClearsBeneficialEffects = true; public boolean noteBlockIgnoreAbove = false; public boolean persistentDroppableEntityDisplayNames = true; public boolean persistentTileEntityLore = false; -@@ -155,6 +156,7 @@ public class PurpurWorldConfig { +@@ -151,6 +152,7 @@ public class PurpurWorldConfig { + entitiesPickUpLootBypassMobGriefing = getBoolean("gameplay-mechanics.entities-pick-up-loot-bypass-mob-griefing", entitiesPickUpLootBypassMobGriefing); fireballsBypassMobGriefing = getBoolean("gameplay-mechanics.fireballs-bypass-mob-griefing", fireballsBypassMobGriefing); - imposeTeleportRestrictionsOnGateways = getBoolean("gameplay-mechanics.impose-teleport-restrictions-on-gateways", imposeTeleportRestrictionsOnGateways); milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); + milkClearsBeneficialEffects = getBoolean("gameplay-mechanics.milk-clears-beneficial-effects", milkClearsBeneficialEffects); noteBlockIgnoreAbove = getBoolean("gameplay-mechanics.note-block-ignore-above", noteBlockIgnoreAbove); diff --git a/patches/unapplied-server/0268-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch b/patches/server/0255-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch similarity index 100% rename from patches/unapplied-server/0268-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch rename to patches/server/0255-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch diff --git a/patches/unapplied-server/0269-Add-log-suppression-for-LibraryLoader.patch b/patches/server/0256-Add-log-suppression-for-LibraryLoader.patch similarity index 91% rename from patches/unapplied-server/0269-Add-log-suppression-for-LibraryLoader.patch rename to patches/server/0256-Add-log-suppression-for-LibraryLoader.patch index 88afdd468..66454ce3c 100644 --- a/patches/unapplied-server/0269-Add-log-suppression-for-LibraryLoader.patch +++ b/patches/server/0256-Add-log-suppression-for-LibraryLoader.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add log suppression for LibraryLoader diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 508b094272bede66826ad0f4908f115454b7d4f2..16273aec24a4824557c0cfb2af2ac782a7a7ab75 100644 +index 3f4584ede9fc039ecdb770a0d6fcb824abc03388..c6757db82626e98a76ad430dcca1f20c2a9c9684 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -470,11 +470,14 @@ public class PurpurConfig { +@@ -461,11 +461,14 @@ public class PurpurConfig { public static boolean loggerSuppressIgnoredAdvancementWarnings = false; public static boolean loggerSuppressUnrecognizedRecipeErrors = false; public static boolean loggerSuppressSetBlockFarChunk = false; diff --git a/patches/unapplied-server/0270-Add-option-to-allow-creeper-to-encircle-target-when-.patch b/patches/server/0257-Add-option-to-allow-creeper-to-encircle-target-when-.patch similarity index 92% rename from patches/unapplied-server/0270-Add-option-to-allow-creeper-to-encircle-target-when-.patch rename to patches/server/0257-Add-option-to-allow-creeper-to-encircle-target-when-.patch index 7663270ef..34e284617 100644 --- a/patches/unapplied-server/0270-Add-option-to-allow-creeper-to-encircle-target-when-.patch +++ b/patches/server/0257-Add-option-to-allow-creeper-to-encircle-target-when-.patch @@ -24,10 +24,10 @@ index 137ec75ee803789deb7b1ca93dd9369c9af362b9..ca95d25af3e9a0536868b0c7fd8e7d2f } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index bf3bc461f7ec2ea4f9bf45cc59bd2189708667eb..cac0df286dcdb64a72786a35d7df4e056441d97f 100644 +index eaf99a0fc84372f12e2c54c9d175072abf1239b4..1c6d34c1d186c561666ac0f3b7e358652e21f1bb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1442,6 +1442,7 @@ public class PurpurWorldConfig { +@@ -1423,6 +1423,7 @@ public class PurpurWorldConfig { public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; public double creeperHeadVisibilityPercent = 0.5D; @@ -35,7 +35,7 @@ index bf3bc461f7ec2ea4f9bf45cc59bd2189708667eb..cac0df286dcdb64a72786a35d7df4e05 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1460,6 +1461,7 @@ public class PurpurWorldConfig { +@@ -1441,6 +1442,7 @@ public class PurpurWorldConfig { creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius); creeperAlwaysDropExp = getBoolean("mobs.creeper.always-drop-exp", creeperAlwaysDropExp); creeperHeadVisibilityPercent = getDouble("mobs.creeper.head-visibility-percent", creeperHeadVisibilityPercent); diff --git a/patches/unapplied-server/0271-Fire-Immunity-API.patch b/patches/server/0258-Fire-Immunity-API.patch similarity index 88% rename from patches/unapplied-server/0271-Fire-Immunity-API.patch rename to patches/server/0258-Fire-Immunity-API.patch index 1f47cad5e..9a7d6bb83 100644 --- a/patches/unapplied-server/0271-Fire-Immunity-API.patch +++ b/patches/server/0258-Fire-Immunity-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fire Immunity API diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 57aa9f71a3b27073f3e229ecd342c52546d151b3..8609cb9946aab1b47d9453dbd200b6414e567499 100644 +index 7e94f52f4086331401e35b6814709054e26d85b6..2ff961220e161d06a11bfb497a83ced150048402 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -426,6 +426,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -428,6 +428,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess private UUID originWorld; public boolean freezeLocked = false; // Paper - Freeze Tick Lock API public boolean fixedPose = false; // Paper - Expand Pose API @@ -16,7 +16,7 @@ index 57aa9f71a3b27073f3e229ecd342c52546d151b3..8609cb9946aab1b47d9453dbd200b641 public void setOrigin(@javax.annotation.Nonnull Location location) { this.origin = location.toVector(); -@@ -1877,7 +1878,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1651,7 +1652,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } public boolean fireImmune() { @@ -25,7 +25,7 @@ index 57aa9f71a3b27073f3e229ecd342c52546d151b3..8609cb9946aab1b47d9453dbd200b641 } public boolean causeFallDamage(float fallDistance, float damageMultiplier, DamageSource damageSource) { -@@ -2574,6 +2575,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -2361,6 +2362,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess nbttagcompound.putBoolean("Paper.FreezeLock", true); } // Paper end @@ -37,7 +37,7 @@ index 57aa9f71a3b27073f3e229ecd342c52546d151b3..8609cb9946aab1b47d9453dbd200b641 return nbttagcompound; } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Saving entity NBT"); -@@ -2721,6 +2727,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -2508,6 +2514,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess freezeLocked = nbt.getBoolean("Paper.FreezeLock"); } // Paper end @@ -50,10 +50,10 @@ index 57aa9f71a3b27073f3e229ecd342c52546d151b3..8609cb9946aab1b47d9453dbd200b641 } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Loading entity NBT"); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 3c674ecd3b80501047b4593e8872034287defd2e..0ed18542fd8e2a992dc56a5f421eaa840e0af193 100644 +index 4c1303c5b9f631efd9497cf893a6ca0348157f2c..31a696de166e1f4d8e5a67cd92427cbda2b8eeb2 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -84,6 +84,16 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -86,6 +86,16 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { this.entityType = CraftEntityType.minecraftToBukkit(entity.getType()); } diff --git a/patches/unapplied-server/0272-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch b/patches/server/0259-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch similarity index 82% rename from patches/unapplied-server/0272-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch rename to patches/server/0259-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch index 67470a2d8..426cf96c4 100644 --- a/patches/unapplied-server/0272-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch +++ b/patches/server/0259-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add option to teleport to spawn on nether ceiling damage diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 8609cb9946aab1b47d9453dbd200b6414e567499..0c02fcbf76506bf2fc1ca2a16f361947ff6365b7 100644 +index 2ff961220e161d06a11bfb497a83ced150048402..4c30eb5b4557226f49968ababb1fe66065ecc486 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -971,6 +971,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -833,6 +833,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess && this.level.paperConfig().environment.netherCeilingVoidDamageHeight.test(v -> this.getY() >= v) && (!(this instanceof Player player) || !player.getAbilities().invulnerable))) { // Paper end - Configurable nether ceiling damage @@ -17,22 +17,22 @@ index 8609cb9946aab1b47d9453dbd200b6414e567499..0c02fcbf76506bf2fc1ca2a16f361947 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d5762258fd0611388bfc5fb5e92045d4fc0f4919..85bb68d172be1dceb69e26b7092a0b7876cb684f 100644 +index 1c6d34c1d186c561666ac0f3b7e358652e21f1bb..780a70df21bef34942c2f1cdf0d1613d4bab94fc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -425,6 +425,7 @@ public class PurpurWorldConfig { +@@ -410,6 +410,7 @@ public class PurpurWorldConfig { public String playerDeathExpDropEquation = "expLevel * 7"; public int playerDeathExpDropMax = 100; public boolean teleportIfOutsideBorder = false; + public boolean teleportOnNetherCeilingDamage = false; public boolean totemOfUndyingWorksInInventory = false; - public boolean playerFixStuckPortal = false; public boolean creativeOnePunch = false; -@@ -452,6 +453,7 @@ public class PurpurWorldConfig { + public boolean playerSleepNearMonsters = false; +@@ -435,6 +436,7 @@ public class PurpurWorldConfig { playerDeathExpDropEquation = getString("gameplay-mechanics.player.exp-dropped-on-death.equation", playerDeathExpDropEquation); playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax); teleportIfOutsideBorder = getBoolean("gameplay-mechanics.player.teleport-if-outside-border", teleportIfOutsideBorder); + teleportOnNetherCeilingDamage = getBoolean("gameplay-mechanics.player.teleport-on-nether-ceiling-damage", teleportOnNetherCeilingDamage); totemOfUndyingWorksInInventory = getBoolean("gameplay-mechanics.player.totem-of-undying-works-in-inventory", totemOfUndyingWorksInInventory); - playerFixStuckPortal = getBoolean("gameplay-mechanics.player.fix-stuck-in-portal", playerFixStuckPortal); creativeOnePunch = getBoolean("gameplay-mechanics.player.one-punch-in-creative", creativeOnePunch); + playerSleepNearMonsters = getBoolean("gameplay-mechanics.player.sleep-ignore-nearby-mobs", playerSleepNearMonsters); diff --git a/patches/unapplied-server/0273-Added-got-ram-event.patch b/patches/server/0260-Added-got-ram-event.patch similarity index 91% rename from patches/unapplied-server/0273-Added-got-ram-event.patch rename to patches/server/0260-Added-got-ram-event.patch index ed9151652..0cdb99254 100644 --- a/patches/unapplied-server/0273-Added-got-ram-event.patch +++ b/patches/server/0260-Added-got-ram-event.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Added got ram event 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 4feddea8703d25a671fe11617f99e1fa9c1deaa2..aa548cba6134652751d73b6774e88f9f6d9ee0ed 100644 +index fab01a3e779e39962ef04305540e2fe3043072a2..e3a018f05c7c0019a076283a5217cca3acb0161b 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 @@ -428,6 +428,7 @@ public class Goat extends Animal { diff --git a/patches/unapplied-server/0274-Log-skipped-entity-s-position.patch b/patches/server/0261-Log-skipped-entity-s-position.patch similarity index 91% rename from patches/unapplied-server/0274-Log-skipped-entity-s-position.patch rename to patches/server/0261-Log-skipped-entity-s-position.patch index 19da920bc..b7d7fb25f 100644 --- a/patches/unapplied-server/0274-Log-skipped-entity-s-position.patch +++ b/patches/server/0261-Log-skipped-entity-s-position.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Log skipped entity's position diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java -index 3097529a9066841a58c899ce55b3bc0cd6af7e88..8120f39a9689dae1233b243b74825e9ff110eac3 100644 +index 831da897fd422df8e57487017871e841cbc95d00..d2e98ad9db7c0fc8c516f64febe9be0425b0e774 100644 --- a/src/main/java/net/minecraft/world/entity/EntityType.java +++ b/src/main/java/net/minecraft/world/entity/EntityType.java @@ -625,6 +625,12 @@ public class EntityType implements FeatureElement, EntityTypeT diff --git a/patches/unapplied-server/0275-End-Crystal-Cramming.patch b/patches/server/0262-End-Crystal-Cramming.patch similarity index 85% rename from patches/unapplied-server/0275-End-Crystal-Cramming.patch rename to patches/server/0262-End-Crystal-Cramming.patch index 52622f80c..18b511447 100644 --- a/patches/unapplied-server/0275-End-Crystal-Cramming.patch +++ b/patches/server/0262-End-Crystal-Cramming.patch @@ -5,10 +5,10 @@ Subject: [PATCH] End Crystal Cramming diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java -index 8c6ce06a1845832c8b0de654657788d2daf6b71b..15ca426701f1fc821da94a4dee577fdbc4f8ff8d 100644 +index 02f1d0418395b100cabfad7294466aaad34ac7c6..c0275197cc9aab2a49d88476e072a94f8e17e9ee 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java -@@ -100,6 +100,7 @@ public class EndCrystal extends Entity { +@@ -102,6 +102,7 @@ public class EndCrystal extends Entity { } } // Paper end - Fix invulnerable end crystals @@ -17,10 +17,10 @@ index 8c6ce06a1845832c8b0de654657788d2daf6b71b..15ca426701f1fc821da94a4dee577fdb // Purpur start diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7a86b8a64d79128176cf0c40133494d88a50a561..c89ca099f47450b78402af968ef6b8fdd82f7c75 100644 +index 780a70df21bef34942c2f1cdf0d1613d4bab94fc..495bf6d8c5898410a955a8a0a9298c4919a7d65b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -956,6 +956,7 @@ public class PurpurWorldConfig { +@@ -937,6 +937,7 @@ public class PurpurWorldConfig { public double basedEndCrystalExplosionPower = 6.0D; public boolean basedEndCrystalExplosionFire = false; public net.minecraft.world.level.Level.ExplosionInteraction basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; @@ -28,7 +28,7 @@ index 7a86b8a64d79128176cf0c40133494d88a50a561..c89ca099f47450b78402af968ef6b8fd private void endCrystalSettings() { if (PurpurConfig.version < 31) { if ("DESTROY".equals(getString("blocks.end-crystal.baseless.explosion-effect", baselessEndCrystalExplosionEffect.name()))) { -@@ -983,6 +984,7 @@ public class PurpurWorldConfig { +@@ -964,6 +965,7 @@ public class PurpurWorldConfig { log(Level.SEVERE, "Unknown value for `blocks.end-crystal.base.explosion-effect`! Using default of `BLOCK`"); basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; } diff --git a/patches/unapplied-server/0276-Option-to-allow-beacon-effects-when-covered-by-tinte.patch b/patches/server/0263-Option-to-allow-beacon-effects-when-covered-by-tinte.patch similarity index 92% rename from patches/unapplied-server/0276-Option-to-allow-beacon-effects-when-covered-by-tinte.patch rename to patches/server/0263-Option-to-allow-beacon-effects-when-covered-by-tinte.patch index 3932a3d94..be8fc4647 100644 --- a/patches/unapplied-server/0276-Option-to-allow-beacon-effects-when-covered-by-tinte.patch +++ b/patches/server/0263-Option-to-allow-beacon-effects-when-covered-by-tinte.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Option to allow beacon effects when covered by tinted glass 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 2b9cc89a2e71b523c90bbfa987b0f8352efff95a..5ad48d2003fbd83e60f6faa68532496131935828 100644 +index d1fb77d83d48183a9a37dbeec7bb0fda623d7e9b..df02a78855f1d0c32d1f744c20803fc97a8085c0 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 @@ -178,6 +178,7 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider, Name @@ -36,10 +36,10 @@ index 2b9cc89a2e71b523c90bbfa987b0f8352efff95a..5ad48d2003fbd83e60f6faa685324961 BeaconBlockEntity.playSound(world, pos, SoundEvents.BEACON_AMBIENT); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c89ca099f47450b78402af968ef6b8fdd82f7c75..5e92560383bed578e0f4ece60dc1758913a9fd91 100644 +index 495bf6d8c5898410a955a8a0a9298c4919a7d65b..88a1843a19967683ce0470c7f6c17f02179ac556 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -855,11 +855,13 @@ public class PurpurWorldConfig { +@@ -836,11 +836,13 @@ public class PurpurWorldConfig { public int beaconLevelTwo = 30; public int beaconLevelThree = 40; public int beaconLevelFour = 50; diff --git a/patches/unapplied-server/0277-Add-attribute-clamping-and-armor-limit-config.patch b/patches/server/0264-Add-attribute-clamping-and-armor-limit-config.patch similarity index 69% rename from patches/unapplied-server/0277-Add-attribute-clamping-and-armor-limit-config.patch rename to patches/server/0264-Add-attribute-clamping-and-armor-limit-config.patch index 8eba08dd9..60c97a0c0 100644 --- a/patches/unapplied-server/0277-Add-attribute-clamping-and-armor-limit-config.patch +++ b/patches/server/0264-Add-attribute-clamping-and-armor-limit-config.patch @@ -5,19 +5,19 @@ Subject: [PATCH] Add attribute clamping and armor limit config diff --git a/src/main/java/net/minecraft/world/damagesource/CombatRules.java b/src/main/java/net/minecraft/world/damagesource/CombatRules.java -index ddc880ac0c8378bc1132be5deba746c1484c941c..7a8e4b9a9f2e1e5a9c38ad330c75df1f880d3e8b 100644 +index 064c1e33f3feee77837bb57887877ae1ca39548d..ffd009bca3fdbfd0b14df78072ef8d472a57cd65 100644 --- a/src/main/java/net/minecraft/world/damagesource/CombatRules.java +++ b/src/main/java/net/minecraft/world/damagesource/CombatRules.java -@@ -12,7 +12,7 @@ public class CombatRules { +@@ -15,7 +15,7 @@ public class CombatRules { - public static float getDamageAfterAbsorb(float damage, DamageSource source, float armor, float armorToughnesss) { - float f = 2.0F + armorToughnesss / 4.0F; -- float g = Mth.clamp(armor - damage / f, armor * 0.2F, 20.0F); -+ float g = Mth.clamp(armor - damage / f, armor * 0.2F, org.purpurmc.purpur.PurpurConfig.limitArmor ? 20F : Float.MAX_VALUE); // Purpur + public static float getDamageAfterAbsorb(LivingEntity armorWearer, float damageAmount, DamageSource damageSource, float armor, float armorToughness) { + float f = 2.0F + armorToughness / 4.0F; +- float g = Mth.clamp(armor - damageAmount / f, armor * 0.2F, 20.0F); ++ float g = Mth.clamp(armor - damageAmount / f, armor * 0.2F, org.purpurmc.purpur.PurpurConfig.limitArmor ? 20F : Float.MAX_VALUE); // Purpur float h = g / 25.0F; - float i = EnchantmentHelper.calculateArmorBreach(source.getEntity(), h); - float j = 1.0F - i; -@@ -20,7 +20,7 @@ public class CombatRules { + ItemStack itemStack = damageSource.getWeaponItem(); + float i; +@@ -30,7 +30,7 @@ public class CombatRules { } public static float getDamageAfterMagicAbsorb(float damageDealt, float protection) { @@ -39,11 +39,11 @@ index f0703302e7dbbda88de8c648d20d87c55ed9b1e0..a913ebabaa5f443afa987b972355a8f8 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 16273aec24a4824557c0cfb2af2ac782a7a7ab75..e7bce4121f7bc2fe0acd8860a73c58dfed73330b 100644 +index c6757db82626e98a76ad430dcca1f20c2a9c9684..920dc26d4485f3c12d237c2b55e3d70671246ddc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -506,6 +506,16 @@ public class PurpurConfig { - fixProjectileLootingTransfer = getBoolean("settings.fix-projectile-looting-transfer", fixProjectileLootingTransfer); +@@ -492,6 +492,16 @@ public class PurpurConfig { + usernameValidCharactersPattern = java.util.regex.Pattern.compile(setPattern == null || setPattern.isBlank() ? defaultPattern : setPattern); } + public static boolean clampAttributes = true; @@ -58,4 +58,4 @@ index 16273aec24a4824557c0cfb2af2ac782a7a7ab75..e7bce4121f7bc2fe0acd8860a73c58df + private static void blastResistanceSettings() { getMap("settings.blast-resistance-overrides", Collections.emptyMap()).forEach((blockId, value) -> { - Block block = BuiltInRegistries.BLOCK.get(new ResourceLocation(blockId)); + Block block = BuiltInRegistries.BLOCK.get(ResourceLocation.withDefaultNamespace(blockId)); diff --git a/patches/unapplied-server/0278-Config-to-remove-explosion-radius-clamp.patch b/patches/server/0265-Config-to-remove-explosion-radius-clamp.patch similarity index 76% rename from patches/unapplied-server/0278-Config-to-remove-explosion-radius-clamp.patch rename to patches/server/0265-Config-to-remove-explosion-radius-clamp.patch index f846613e7..5a3e49334 100644 --- a/patches/unapplied-server/0278-Config-to-remove-explosion-radius-clamp.patch +++ b/patches/server/0265-Config-to-remove-explosion-radius-clamp.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config to remove explosion radius clamp diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index 6379b3b8e633d1a16532b4664e53fa5afa616ab6..69d8ff6a97335b6fe4b20a8229a77f2591b0f050 100644 +index bff83fe413c7baef4ba56a3270ea4463a58c792f..c3bd4bcf79ef1ad28bb5651271144668e11f780b 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java -@@ -98,7 +98,7 @@ public class Explosion { +@@ -99,7 +99,7 @@ public class Explosion { this.hitPlayers = Maps.newHashMap(); this.level = world; this.source = entity; @@ -17,7 +17,7 @@ index 6379b3b8e633d1a16532b4664e53fa5afa616ab6..69d8ff6a97335b6fe4b20a8229a77f25 this.x = x; this.y = y; this.z = z; -@@ -426,7 +426,7 @@ public class Explosion { +@@ -162,7 +162,7 @@ public class Explosion { public void explode() { // CraftBukkit start @@ -27,10 +27,10 @@ index 6379b3b8e633d1a16532b4664e53fa5afa616ab6..69d8ff6a97335b6fe4b20a8229a77f25 } // CraftBukkit end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5e92560383bed578e0f4ece60dc1758913a9fd91..5b658bb3d48c9fb8e080728a89fb931c7be978a6 100644 +index 88a1843a19967683ce0470c7f6c17f02179ac556..06ef23a5be69952876e539cd2ff785dae0d19caf 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -221,6 +221,11 @@ public class PurpurWorldConfig { +@@ -217,6 +217,11 @@ public class PurpurWorldConfig { entitySharedRandom = getBoolean("settings.entity.shared-random", entitySharedRandom); } @@ -39,6 +39,6 @@ index 5e92560383bed578e0f4ece60dc1758913a9fd91..5b658bb3d48c9fb8e080728a89fb931c + explosionClampRadius = getBoolean("gameplay-mechanics.clamp-explosion-radius", explosionClampRadius); + } + - public boolean infinityWorksWithoutArrows = false; - public boolean infinityWorksWithNormalArrows = true; - public boolean infinityWorksWithSpectralArrows = false; + public List itemImmuneToCactus = new ArrayList<>(); + public List itemImmuneToExplosion = new ArrayList<>(); + public List itemImmuneToFire = new ArrayList<>(); diff --git a/patches/unapplied-server/0279-bonemealable-sugarcane-cactus-and-netherwart.patch b/patches/server/0266-bonemealable-sugarcane-cactus-and-netherwart.patch similarity index 98% rename from patches/unapplied-server/0279-bonemealable-sugarcane-cactus-and-netherwart.patch rename to patches/server/0266-bonemealable-sugarcane-cactus-and-netherwart.patch index 78c156054..8f2d70c7b 100644 --- a/patches/unapplied-server/0279-bonemealable-sugarcane-cactus-and-netherwart.patch +++ b/patches/server/0266-bonemealable-sugarcane-cactus-and-netherwart.patch @@ -137,10 +137,10 @@ index c48c622e92cedeaa46b929c7adfedec98dd5a3fb..6449b5c424443b5f0ee7e3fce8034494 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5b658bb3d48c9fb8e080728a89fb931c7be978a6..8c7508fc6163a73740aedbe9c4dee2d21c4fa0fa 100644 +index 06ef23a5be69952876e539cd2ff785dae0d19caf..62328bd56578789dd898b203396d37a76e75f1e4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -909,8 +909,20 @@ public class PurpurWorldConfig { +@@ -890,8 +890,20 @@ public class PurpurWorldConfig { } public boolean cactusBreaksFromSolidNeighbors = true; diff --git a/patches/unapplied-server/0280-Add-PreExplodeEvents.patch b/patches/server/0267-Add-PreExplodeEvents.patch similarity index 92% rename from patches/unapplied-server/0280-Add-PreExplodeEvents.patch rename to patches/server/0267-Add-PreExplodeEvents.patch index e8d66b63b..722537041 100644 --- a/patches/unapplied-server/0280-Add-PreExplodeEvents.patch +++ b/patches/server/0267-Add-PreExplodeEvents.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add PreExplodeEvents diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index 6c2b0b7c59b230ec93717b9f5b136b1d8f2b932b..133d994d9ac9d4f9527135ac0c77e5749917f8c3 100644 +index c3bd4bcf79ef1ad28bb5651271144668e11f780b..2429f6525623e5a052a92479486328f49c3f1ba3 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java -@@ -430,6 +430,25 @@ public class Explosion { +@@ -166,6 +166,25 @@ public class Explosion { return; } // CraftBukkit end diff --git a/patches/unapplied-server/0281-Improve-output-of-plugins-command.patch b/patches/server/0268-Improve-output-of-plugins-command.patch similarity index 100% rename from patches/unapplied-server/0281-Improve-output-of-plugins-command.patch rename to patches/server/0268-Improve-output-of-plugins-command.patch diff --git a/patches/unapplied-server/0283-Make-GUI-Great-Again.patch b/patches/server/0269-Make-GUI-Great-Again.patch similarity index 98% rename from patches/unapplied-server/0283-Make-GUI-Great-Again.patch rename to patches/server/0269-Make-GUI-Great-Again.patch index 758d27fe1..8161e0793 100644 --- a/patches/unapplied-server/0283-Make-GUI-Great-Again.patch +++ b/patches/server/0269-Make-GUI-Great-Again.patch @@ -96,10 +96,10 @@ index 0000000000000000000000000000000000000000..15a226e3854d731f7724025ea3459c8a + } +} diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 0d2d254fc2795f0ec844029bd4c05cdf6dc94207..775c5de4f5094260096cef6723dd50dfe2cb0c81 100644 +index 7a579cdb6bb9dced485f86d1bfe8ab432db51ab1..931da957b34dc2d84f52de3d9e790c811a2a075a 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -@@ -110,6 +110,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface +@@ -114,6 +114,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface return; } // Paper start - Use TerminalConsoleAppender @@ -398,11 +398,11 @@ index 0000000000000000000000000000000000000000..d75fb5e77eff27d86135ed7d605dbc25 + } +} diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml -index d2a75850af9c6ad2aca66a5f994f1b587d73eac4..a056aa167887abef9e6d531a9edd2cda433567d2 100644 +index 637d64da9938e51a97338b9253b43889585c67bb..f9313059b4e3b2d100e66ed8a70d4811dc394031 100644 --- a/src/main/resources/log4j2.xml +++ b/src/main/resources/log4j2.xml @@ -2,7 +2,16 @@ - + - diff --git a/patches/unapplied-server/0284-Stored-Bee-API.patch b/patches/server/0270-Stored-Bee-API.patch similarity index 100% rename from patches/unapplied-server/0284-Stored-Bee-API.patch rename to patches/server/0270-Stored-Bee-API.patch diff --git a/patches/unapplied-server/0285-Shears-can-defuse-TNT.patch b/patches/server/0271-Shears-can-defuse-TNT.patch similarity index 91% rename from patches/unapplied-server/0285-Shears-can-defuse-TNT.patch rename to patches/server/0271-Shears-can-defuse-TNT.patch index 7b370fa95..28aedd29f 100644 --- a/patches/unapplied-server/0285-Shears-can-defuse-TNT.patch +++ b/patches/server/0271-Shears-can-defuse-TNT.patch @@ -8,10 +8,10 @@ Shears can now defuse TNT. Each world can have a configured chance for the TNT t By default the option is disabled to avoid breaking any possible vanilla mechanics. diff --git a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java -index f1f352ec0e51f5db59254841a06c176c5a876fc9..dff0e7b08b973a1b29f916e63d3e4778d6c56cdc 100644 +index 42bd2d9a1528b6210e4dfb56233062fd97c9743b..2a4425d04917b32c7ae5af3e7422c0bafc2aa1c2 100644 --- a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java +++ b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java -@@ -193,4 +193,29 @@ public class PrimedTnt extends Entity implements TraceableEntity { +@@ -230,4 +230,29 @@ public class PrimedTnt extends Entity implements TraceableEntity { return !level().paperConfig().fixes.preventTntFromMovingInWater && super.isPushedByFluid(); } // Paper end - Option to prevent TNT from moving in water @@ -42,10 +42,10 @@ index f1f352ec0e51f5db59254841a06c176c5a876fc9..dff0e7b08b973a1b29f916e63d3e4778 + // Purpur end - Shears can defuse TNT } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1a417bb1f55a1525ec2e80ab9de07412173f31be..9fbe25458260f7a7a71f0684d12756697e7dacb4 100644 +index 62328bd56578789dd898b203396d37a76e75f1e4..9e5dfbd8bc8c7dc16dbe1c00ba9420ad338ed671 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -3306,4 +3306,11 @@ public class PurpurWorldConfig { +@@ -3281,4 +3281,11 @@ public class PurpurWorldConfig { cauldronDripstoneWaterFillChance = (float) getDouble("blocks.cauldron.fill-chances.dripstone-water", cauldronDripstoneWaterFillChance); cauldronDripstoneLavaFillChance = (float) getDouble("blocks.cauldron.fill-chances.dripstone-lava", cauldronDripstoneLavaFillChance); } diff --git a/patches/unapplied-server/0286-Explorer-Map-API.patch b/patches/server/0272-Explorer-Map-API.patch similarity index 91% rename from patches/unapplied-server/0286-Explorer-Map-API.patch rename to patches/server/0272-Explorer-Map-API.patch index b5f2c63e7..d89a85814 100644 --- a/patches/unapplied-server/0286-Explorer-Map-API.patch +++ b/patches/server/0272-Explorer-Map-API.patch @@ -17,13 +17,13 @@ index ce461b1a8d7fab87ae28e30205f6fab67f1808b6..608390ed36710a419de1542b80340dd3 int i = 1 << mapItemSavedData.scale; int j = mapItemSavedData.centerX; diff --git a/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java b/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java -index cf8ae635fce7ea66d4e1ab1dc05575f035fa95ef..e26f6215ca42885cb0635a3183a8df93a924ba7f 100644 +index a43544704109f21bab230dd9bf0401e28f878582..627d4ee90a2ebc137d7e94d988eba2f212b7f26d 100644 --- a/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java +++ b/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java @@ -79,6 +79,7 @@ public class MapItemSavedData extends SavedData { + public final Map decorations = Maps.newLinkedHashMap(); private final Map frameMarkers = Maps.newHashMap(); private int trackedDecorationCount; - private org.bukkit.craftbukkit.map.RenderData vanillaRender = new org.bukkit.craftbukkit.map.RenderData(); // Paper + public boolean isExplorerMap; // Purpur // CraftBukkit start diff --git a/patches/unapplied-server/0287-Option-Ocelot-Spawn-Under-Sea-Level.patch b/patches/server/0273-Option-Ocelot-Spawn-Under-Sea-Level.patch similarity index 84% rename from patches/unapplied-server/0287-Option-Ocelot-Spawn-Under-Sea-Level.patch rename to patches/server/0273-Option-Ocelot-Spawn-Under-Sea-Level.patch index 192752846..30c2d890c 100644 --- a/patches/unapplied-server/0287-Option-Ocelot-Spawn-Under-Sea-Level.patch +++ b/patches/server/0273-Option-Ocelot-Spawn-Under-Sea-Level.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Option Ocelot Spawn Under Sea Level 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 5668aca08732e317c7bccacf1cfaae7d8666bce6..07dc8a43f4e8c54a94696b84896d32f66a207ad3 100644 +index e09ca4aa99f2e58f97159a40e33ed863fa2ae7df..6e866ec44a83ec9064ac3228bd96eb251f3b28b0 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java -@@ -293,7 +293,7 @@ public class Ocelot extends Animal { +@@ -284,7 +284,7 @@ public class Ocelot extends Animal { if (world.isUnobstructed(this) && !world.containsAnyLiquid(this.getBoundingBox())) { BlockPos blockposition = this.blockPosition(); @@ -18,10 +18,10 @@ index 5668aca08732e317c7bccacf1cfaae7d8666bce6..07dc8a43f4e8c54a94696b84896d32f6 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9fbe25458260f7a7a71f0684d12756697e7dacb4..8579bc24ff63f42f85791cdc6e167392561b6424 100644 +index 9e5dfbd8bc8c7dc16dbe1c00ba9420ad338ed671..4af55c74a5ad9752f105b7330a32061de217a6e6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2121,6 +2121,7 @@ public class PurpurWorldConfig { +@@ -2100,6 +2100,7 @@ public class PurpurWorldConfig { public int ocelotBreedingTicks = 6000; public boolean ocelotTakeDamageFromWater = false; public boolean ocelotAlwaysDropExp = false; @@ -29,7 +29,7 @@ index 9fbe25458260f7a7a71f0684d12756697e7dacb4..8579bc24ff63f42f85791cdc6e167392 private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -2134,6 +2135,7 @@ public class PurpurWorldConfig { +@@ -2113,6 +2114,7 @@ public class PurpurWorldConfig { ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); ocelotTakeDamageFromWater = getBoolean("mobs.ocelot.takes-damage-from-water", ocelotTakeDamageFromWater); ocelotAlwaysDropExp = getBoolean("mobs.ocelot.always-drop-exp", ocelotAlwaysDropExp); diff --git a/patches/unapplied-server/0288-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch b/patches/server/0274-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch similarity index 90% rename from patches/unapplied-server/0288-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch rename to patches/server/0274-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch index fb0565574..f57e43ff6 100644 --- a/patches/unapplied-server/0288-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch +++ b/patches/server/0274-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch @@ -5,7 +5,7 @@ Subject: [PATCH] add an option for piglins to ignore gold-trimmed armor diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinAi.java b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinAi.java -index e25af9af8f87e6762716749c367658bf6bda9e34..b7d5c0b0e3741fcf04c4bac21a82fc41e2eeed5d 100644 +index 0192b62fd66621a72fcf2f20896647e5950ba993..d079d5492b6ed709b1e0a7d84fb5f8f6896fc2fe 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinAi.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinAi.java @@ -606,11 +606,18 @@ public class PiglinAi { @@ -29,10 +29,10 @@ index e25af9af8f87e6762716749c367658bf6bda9e34..b7d5c0b0e3741fcf04c4bac21a82fc41 piglin.getBrain().eraseMemory(MemoryModuleType.WALK_TARGET); piglin.getNavigation().stop(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8579bc24ff63f42f85791cdc6e167392561b6424..6bc41d7c2d395065e5353856ebaee52ded653a22 100644 +index 4af55c74a5ad9752f105b7330a32061de217a6e6..07dbd2768b52d3143d65c34adf48884bfde00c4d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2290,6 +2290,7 @@ public class PurpurWorldConfig { +@@ -2269,6 +2269,7 @@ public class PurpurWorldConfig { public int piglinPortalSpawnModifier = 2000; public boolean piglinAlwaysDropExp = false; public double piglinHeadVisibilityPercent = 0.5D; @@ -40,7 +40,7 @@ index 8579bc24ff63f42f85791cdc6e167392561b6424..6bc41d7c2d395065e5353856ebaee52d private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2305,6 +2306,7 @@ public class PurpurWorldConfig { +@@ -2284,6 +2285,7 @@ public class PurpurWorldConfig { piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier); piglinAlwaysDropExp = getBoolean("mobs.piglin.always-drop-exp", piglinAlwaysDropExp); piglinHeadVisibilityPercent = getDouble("mobs.piglin.head-visibility-percent", piglinHeadVisibilityPercent); diff --git a/patches/unapplied-server/0289-Add-option-for-always-showing-item-in-player-death-m.patch b/patches/server/0275-Add-option-for-always-showing-item-in-player-death-m.patch similarity index 91% rename from patches/unapplied-server/0289-Add-option-for-always-showing-item-in-player-death-m.patch rename to patches/server/0275-Add-option-for-always-showing-item-in-player-death-m.patch index fe833a332..1af1d0de4 100644 --- a/patches/unapplied-server/0289-Add-option-for-always-showing-item-in-player-death-m.patch +++ b/patches/server/0275-Add-option-for-always-showing-item-in-player-death-m.patch @@ -18,10 +18,10 @@ index 357a79d72a2de02a019595e457fe432bf409e516..4fb025a63628eb60509d90b680922a02 : Component.translatable(deathTranslationKey, this.mob.getDisplayName(), attackerDisplayName); } diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSource.java b/src/main/java/net/minecraft/world/damagesource/DamageSource.java -index e0d13102f18c78915ff64dab78ca157954c44ae0..1ce1235cbbf23fe975c85a0f713280b433459951 100644 +index d95d122601dd47a27e8d82a13b071919c360fe68..4a96d914f8aa6f0c5f13fc85369a311f25835ac2 100644 --- a/src/main/java/net/minecraft/world/damagesource/DamageSource.java +++ b/src/main/java/net/minecraft/world/damagesource/DamageSource.java -@@ -213,7 +213,7 @@ public class DamageSource { +@@ -218,7 +218,7 @@ public class DamageSource { ItemStack itemstack1 = itemstack; @@ -31,10 +31,10 @@ index e0d13102f18c78915ff64dab78ca157954c44ae0..1ce1235cbbf23fe975c85a0f713280b4 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 6d663aabdc3b94aba03be8222bba8c57cf7637e3..fed51b505cbb9521ac76974fb06ca92f79b79973 100644 +index 920dc26d4485f3c12d237c2b55e3d70671246ddc..f93224fe05c29cdecf5e04afec1624a4edfbb77b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -576,4 +576,9 @@ public class PurpurConfig { +@@ -562,4 +562,9 @@ public class PurpurConfig { block.fallDistanceMultiplier = fallDistanceMultiplier.floatValue(); }); } diff --git a/patches/unapplied-server/0290-place-end-crystal-on-any-block.patch b/patches/server/0276-place-end-crystal-on-any-block.patch similarity index 88% rename from patches/unapplied-server/0290-place-end-crystal-on-any-block.patch rename to patches/server/0276-place-end-crystal-on-any-block.patch index 8bf62f530..ebcdd4a9f 100644 --- a/patches/unapplied-server/0290-place-end-crystal-on-any-block.patch +++ b/patches/server/0276-place-end-crystal-on-any-block.patch @@ -5,7 +5,7 @@ Subject: [PATCH] place end crystal on any block diff --git a/src/main/java/net/minecraft/world/item/EndCrystalItem.java b/src/main/java/net/minecraft/world/item/EndCrystalItem.java -index dd1bdb4bb87a3a59c229ba76b36841d199717624..54607cea2622f259aedfe425b60e2317e4167bf9 100644 +index 5f51e64cb0611a4ba6bdcdcacbcba1063a7f3a5c..8fb564f43e2f1194d2ad68d35c4df6b921d50cfc 100644 --- a/src/main/java/net/minecraft/world/item/EndCrystalItem.java +++ b/src/main/java/net/minecraft/world/item/EndCrystalItem.java @@ -27,7 +27,7 @@ public class EndCrystalItem extends Item { @@ -18,10 +18,10 @@ index dd1bdb4bb87a3a59c229ba76b36841d199717624..54607cea2622f259aedfe425b60e2317 } else { BlockPos blockposition1 = blockposition.above(); final BlockPos aboveBlockPosition = blockposition1; // Paper - OBFHELPER diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 27eadd84aed6d109e278b0ee450fc2c302f61aba..81c4b22a4fb7cbc2601966b646bb20294b46313e 100644 +index 07dbd2768b52d3143d65c34adf48884bfde00c4d..ddc188c67246fd9b0a887a6c4248e369e08acff0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -978,6 +978,7 @@ public class PurpurWorldConfig { +@@ -957,6 +957,7 @@ public class PurpurWorldConfig { public boolean basedEndCrystalExplosionFire = false; public net.minecraft.world.level.Level.ExplosionInteraction basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; public int endCrystalCramming = 0; @@ -29,7 +29,7 @@ index 27eadd84aed6d109e278b0ee450fc2c302f61aba..81c4b22a4fb7cbc2601966b646bb2029 private void endCrystalSettings() { if (PurpurConfig.version < 31) { if ("DESTROY".equals(getString("blocks.end-crystal.baseless.explosion-effect", baselessEndCrystalExplosionEffect.name()))) { -@@ -1006,6 +1007,7 @@ public class PurpurWorldConfig { +@@ -985,6 +986,7 @@ public class PurpurWorldConfig { basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; } endCrystalCramming = getInt("blocks.end-crystal.cramming-amount", endCrystalCramming); diff --git a/patches/unapplied-server/0291-Add-option-to-disable-the-copper-oxidation-proximity.patch b/patches/server/0277-Add-option-to-disable-the-copper-oxidation-proximity.patch similarity index 87% rename from patches/unapplied-server/0291-Add-option-to-disable-the-copper-oxidation-proximity.patch rename to patches/server/0277-Add-option-to-disable-the-copper-oxidation-proximity.patch index 8d565ec61..ff1e3da19 100644 --- a/patches/unapplied-server/0291-Add-option-to-disable-the-copper-oxidation-proximity.patch +++ b/patches/server/0277-Add-option-to-disable-the-copper-oxidation-proximity.patch @@ -18,18 +18,18 @@ index daae7fd6e0148cfba8e359d990748a0c83a3376e..0e06b1bcd906e92c083dc74d56d6d0a2 return random.nextFloat() < f1 ? this.getNext(state) : Optional.empty(); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 81c4b22a4fb7cbc2601966b646bb20294b46313e..43d91390274c8cc8863e0aceb20837415b915166 100644 +index ddc188c67246fd9b0a887a6c4248e369e08acff0..913ec0b08cbffcbd30579c0925ffa301c9466101 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -146,6 +146,7 @@ public class PurpurWorldConfig { +@@ -143,6 +143,7 @@ public class PurpurWorldConfig { public boolean rainStopsAfterSleep = true; public boolean thunderStopsAfterSleep = true; public int mobLastHurtByPlayerTime = 100; + public boolean disableOxidationProximityPenalty = false; private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); - mendingMultiplier = getDouble("gameplay-mechanics.mending-multiplier", mendingMultiplier); -@@ -181,6 +182,7 @@ public class PurpurWorldConfig { + alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative); +@@ -175,6 +176,7 @@ public class PurpurWorldConfig { rainStopsAfterSleep = getBoolean("gameplay-mechanics.rain-stops-after-sleep", rainStopsAfterSleep); thunderStopsAfterSleep = getBoolean("gameplay-mechanics.thunder-stops-after-sleep", thunderStopsAfterSleep); mobLastHurtByPlayerTime = getInt("gameplay-mechanics.mob-last-hurt-by-player-time", mobLastHurtByPlayerTime); diff --git a/patches/unapplied-server/0292-register-minecraft-debug-commands.patch b/patches/server/0278-register-minecraft-debug-commands.patch similarity index 85% rename from patches/unapplied-server/0292-register-minecraft-debug-commands.patch rename to patches/server/0278-register-minecraft-debug-commands.patch index db1601242..8b17f2fe7 100644 --- a/patches/unapplied-server/0292-register-minecraft-debug-commands.patch +++ b/patches/server/0278-register-minecraft-debug-commands.patch @@ -5,10 +5,10 @@ Subject: [PATCH] register minecraft debug commands diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index 13dfb3e506d50c0b191baf5d05bbfc28c20be0ae..f9d0e8ee9414b3897f268ba78a1469ddf868f51a 100644 +index 7bcc0f87337547f8783dd9cc8adff61187cd41d7..d559b6f0e5ae4f761cd5fe4124bc26034ef297eb 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java -@@ -222,8 +222,8 @@ public class Commands { +@@ -221,8 +221,8 @@ public class Commands { JfrCommand.register(this.dispatcher); } @@ -16,11 +16,11 @@ index 13dfb3e506d50c0b191baf5d05bbfc28c20be0ae..f9d0e8ee9414b3897f268ba78a1469dd - TestCommand.register(this.dispatcher); + if (org.purpurmc.purpur.PurpurConfig.registerMinecraftDebugCommands || SharedConstants.IS_RUNNING_IN_IDE) { // Purpur + if (!org.purpurmc.purpur.PurpurConfig.registerMinecraftDebugCommands) TestCommand.register(this.dispatcher); // Purpur - ResetChunksCommand.register(this.dispatcher); RaidCommand.register(this.dispatcher, commandRegistryAccess); DebugPathCommand.register(this.dispatcher); + DebugMobSpawningCommand.register(this.dispatcher); diff --git a/src/main/java/net/minecraft/server/Main.java b/src/main/java/net/minecraft/server/Main.java -index 8925440dbc35dbc4a7d59f13511d7afeda803260..411f1f8c6be072cfc5ba88cbec38dbc4300a41d1 100644 +index 824afdc486a50952bf5e32b06509f7952da9bba5..abb60e5cf3ecdb40561510dc53294e3010fbe039 100644 --- a/src/main/java/net/minecraft/server/Main.java +++ b/src/main/java/net/minecraft/server/Main.java @@ -122,6 +122,7 @@ public class Main { @@ -32,10 +32,10 @@ index 8925440dbc35dbc4a7d59f13511d7afeda803260..411f1f8c6be072cfc5ba88cbec38dbc4 io.papermc.paper.plugin.PluginInitializerManager.load(optionset); // Paper diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 6e0e871153e0ec85fd40ddf0581b6ed2932b9f99..f49108ed94f7787347c5e0a721646083d6dffafc 100644 +index f93224fe05c29cdecf5e04afec1624a4edfbb77b..a6681c9e0ba0544bf1fd80d73be7f22f4fed1157 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -581,4 +581,9 @@ public class PurpurConfig { +@@ -567,4 +567,9 @@ public class PurpurConfig { private static void playerDeathsAlwaysShowItem() { playerDeathsAlwaysShowItem = getBoolean("settings.player-deaths-always-show-item", playerDeathsAlwaysShowItem); } diff --git a/patches/server/0279-Configurable-villager-search-radius.patch b/patches/server/0279-Configurable-villager-search-radius.patch new file mode 100644 index 000000000..29e7f998d --- /dev/null +++ b/patches/server/0279-Configurable-villager-search-radius.patch @@ -0,0 +1,54 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Pantera +Date: Fri, 26 Jan 2024 15:57:24 +0900 +Subject: [PATCH] Configurable-villager-search-radius + + +diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java b/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java +index e8aa27547e3fa1a42720889c7038d4fb0273e7b5..2638c5502016da62c54ec02a1d62834cba8e69d3 100644 +--- a/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java ++++ b/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java +@@ -72,7 +72,7 @@ public class AcquirePoi { + } + }; + Set, BlockPos>> set = poiManager.findAllClosestFirstWithType( +- poiPredicate, predicate2, entity.blockPosition(), 48, PoiManager.Occupancy.HAS_SPACE ++ poiPredicate, predicate2, entity.blockPosition(), world.purpurConfig.villagerAcquirePoiSearchRadius, PoiManager.Occupancy.HAS_SPACE // Purpur + ) + .limit(5L) + .collect(Collectors.toSet()); +diff --git a/src/main/java/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java b/src/main/java/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java +index d5a549f08b98c80a5cf0eef02cb8a389c32dfecb..222c87e80cb089867ce9a7d2dceebe21b4bfe0de 100644 +--- a/src/main/java/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java ++++ b/src/main/java/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java +@@ -54,7 +54,7 @@ public class NearestBedSensor extends Sensor { + } + }; + Set, BlockPos>> set = poiManager.findAllWithType( +- holder -> holder.is(PoiTypes.HOME), predicate, entity.blockPosition(), 48, PoiManager.Occupancy.ANY ++ holder -> holder.is(PoiTypes.HOME), predicate, entity.blockPosition(), world.purpurConfig.villagerNearestBedSensorSearchRadius, PoiManager.Occupancy.ANY + ) + .collect(Collectors.toSet()); + Path path = AcquirePoi.findPathToPois(entity, set); +diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +index 913ec0b08cbffcbd30579c0925ffa301c9466101..624a7992143431df4d61b89a0da64bdf2ff124ad 100644 +--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java ++++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +@@ -2898,6 +2898,8 @@ public class PurpurWorldConfig { + public boolean villagerDisplayTradeItem = true; + public int villagerSpawnIronGolemRadius = 0; + public int villagerSpawnIronGolemLimit = 0; ++ public int villagerAcquirePoiSearchRadius = 48; ++ public int villagerNearestBedSensorSearchRadius = 48; + private void villagerSettings() { + villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); + villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); +@@ -2933,6 +2935,8 @@ public class PurpurWorldConfig { + villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem); + villagerSpawnIronGolemRadius = getInt("mobs.villager.spawn-iron-golem.radius", villagerSpawnIronGolemRadius); + villagerSpawnIronGolemLimit = getInt("mobs.villager.spawn-iron-golem.limit", villagerSpawnIronGolemLimit); ++ villagerAcquirePoiSearchRadius = getInt("mobs.villager.search-radius.acquire-poi", villagerAcquirePoiSearchRadius); ++ villagerNearestBedSensorSearchRadius = getInt("mobs.villager.search-radius.nearest-bed-sensor", villagerNearestBedSensorSearchRadius); + } + + public boolean vindicatorRidable = false; diff --git a/patches/unapplied-server/0294-option-to-make-ravagers-afraid-of-rabbits.patch b/patches/server/0280-option-to-make-ravagers-afraid-of-rabbits.patch similarity index 85% rename from patches/unapplied-server/0294-option-to-make-ravagers-afraid-of-rabbits.patch rename to patches/server/0280-option-to-make-ravagers-afraid-of-rabbits.patch index 3d0aa1688..b43e19439 100644 --- a/patches/unapplied-server/0294-option-to-make-ravagers-afraid-of-rabbits.patch +++ b/patches/server/0280-option-to-make-ravagers-afraid-of-rabbits.patch @@ -6,10 +6,10 @@ Subject: [PATCH] option to make ravagers afraid of rabbits https://github.com/PurpurMC/Purpur/discussions/713 diff --git a/src/main/java/net/minecraft/world/entity/monster/Ravager.java b/src/main/java/net/minecraft/world/entity/monster/Ravager.java -index 9551bd7c9bed37cf17910e7f71b82ed20fb2d759..dbfcca8adb7afa7a3101f22c2bc48aff6abae4a2 100644 +index 714a37974e3256913c15193f2bd292fe45072c7f..0c494a8c71e316307af2c0e256ccfd23685f8219 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Ravager.java +++ b/src/main/java/net/minecraft/world/entity/monster/Ravager.java -@@ -111,6 +111,7 @@ public class Ravager extends Raider { +@@ -112,6 +112,7 @@ public class Ravager extends Raider { super.registerGoals(); this.goalSelector.addGoal(0, new FloatGoal(this)); this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur @@ -18,10 +18,10 @@ index 9551bd7c9bed37cf17910e7f71b82ed20fb2d759..dbfcca8adb7afa7a3101f22c2bc48aff this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 0.4D)); this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 93d76ef7483bf8760971abe5803d8afe778792ca..d8184b10271eab447b3645c65d19328387cc24d3 100644 +index 624a7992143431df4d61b89a0da64bdf2ff124ad..95afa69b30eb67226b23b91d10eb1516181d36d4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2436,6 +2436,7 @@ public class PurpurWorldConfig { +@@ -2415,6 +2415,7 @@ public class PurpurWorldConfig { public boolean ravagerTakeDamageFromWater = false; public List ravagerGriefableBlocks = new ArrayList<>(); public boolean ravagerAlwaysDropExp = false; @@ -29,7 +29,7 @@ index 93d76ef7483bf8760971abe5803d8afe778792ca..d8184b10271eab447b3645c65d193283 private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -2466,6 +2467,7 @@ public class PurpurWorldConfig { +@@ -2445,6 +2446,7 @@ public class PurpurWorldConfig { } }); ravagerAlwaysDropExp = getBoolean("mobs.ravager.always-drop-exp", ravagerAlwaysDropExp); diff --git a/patches/unapplied-server/0295-config-for-startup-commands.patch b/patches/server/0281-config-for-startup-commands.patch similarity index 82% rename from patches/unapplied-server/0295-config-for-startup-commands.patch rename to patches/server/0281-config-for-startup-commands.patch index ed6aa7165..ff19c7f89 100644 --- a/patches/unapplied-server/0295-config-for-startup-commands.patch +++ b/patches/server/0281-config-for-startup-commands.patch @@ -5,10 +5,10 @@ Subject: [PATCH] config for startup commands diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 9e9537007a156dfbd41e53a93312ccb8be061a08..330bae815c0a332e3dc9fa7b224c9f92098199b9 100644 +index 49020c26d2bf6d30fadc3352925a76b91c490561..e36cb57db8776ef01cb4e56819ada249d1919b46 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1184,6 +1184,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop -Date: Fri, 26 Jan 2024 15:57:24 +0900 -Subject: [PATCH] Configurable-villager-search-radius - - -diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java b/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java -index e1b6fe9ecda25f86431baf414f1bfd3a26a8b2bd..6499e3fe49e453db11e51eaf717ca8b3b682056b 100644 ---- a/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java -+++ b/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java -@@ -73,7 +73,7 @@ public class AcquirePoi { - }; - // Paper start - optimise POI access - java.util.List, BlockPos>> poiposes = new java.util.ArrayList<>(); -- io.papermc.paper.util.PoiAccess.findNearestPoiPositions(poiManager, poiPredicate, predicate2, entity.blockPosition(), 48, 48*48, PoiManager.Occupancy.HAS_SPACE, false, 5, poiposes); -+ io.papermc.paper.util.PoiAccess.findNearestPoiPositions(poiManager, poiPredicate, predicate2, entity.blockPosition(), world.purpurConfig.villagerAcquirePoiSearchRadius, world.purpurConfig.villagerAcquirePoiSearchRadius*world.purpurConfig.villagerAcquirePoiSearchRadius, PoiManager.Occupancy.HAS_SPACE, false, 5, poiposes); // Purpur - Set, BlockPos>> set = new java.util.HashSet<>(poiposes); - // Paper end - optimise POI access - Path path = findPathToPois(entity, set); -diff --git a/src/main/java/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java b/src/main/java/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java -index 92731b6b593289e9f583c9b705b219e81fcd8e73..9104d7010bda6f9f73b478c11490ef9c53f76da2 100644 ---- a/src/main/java/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java -+++ b/src/main/java/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java -@@ -56,7 +56,7 @@ public class NearestBedSensor extends Sensor { - // Paper start - optimise POI access - java.util.List, BlockPos>> poiposes = new java.util.ArrayList<>(); - // don't ask me why it's unbounded. ask mojang. -- io.papermc.paper.util.PoiAccess.findAnyPoiPositions(poiManager, type -> type.is(PoiTypes.HOME), predicate, entity.blockPosition(), 48, PoiManager.Occupancy.ANY, false, Integer.MAX_VALUE, poiposes); -+ io.papermc.paper.util.PoiAccess.findAnyPoiPositions(poiManager, type -> type.is(PoiTypes.HOME), predicate, entity.blockPosition(), world.purpurConfig.villagerNearestBedSensorSearchRadius, PoiManager.Occupancy.ANY, false, Integer.MAX_VALUE, poiposes); // Purpur - Path path = AcquirePoi.findPathToPois(entity, new java.util.HashSet<>(poiposes)); - // Paper end - optimise POI access - if (path != null && path.canReach()) { -diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0bd5657b95fb99e16a04b8de5edb8d8cd481d5aa..93d76ef7483bf8760971abe5803d8afe778792ca 100644 ---- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2920,6 +2920,8 @@ public class PurpurWorldConfig { - public boolean villagerDisplayTradeItem = true; - public int villagerSpawnIronGolemRadius = 0; - public int villagerSpawnIronGolemLimit = 0; -+ public int villagerAcquirePoiSearchRadius = 48; -+ public int villagerNearestBedSensorSearchRadius = 48; - private void villagerSettings() { - villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); - villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2956,6 +2958,8 @@ public class PurpurWorldConfig { - villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem); - villagerSpawnIronGolemRadius = getInt("mobs.villager.spawn-iron-golem.radius", villagerSpawnIronGolemRadius); - villagerSpawnIronGolemLimit = getInt("mobs.villager.spawn-iron-golem.limit", villagerSpawnIronGolemLimit); -+ villagerAcquirePoiSearchRadius = getInt("mobs.villager.search-radius.acquire-poi", villagerAcquirePoiSearchRadius); -+ villagerNearestBedSensorSearchRadius = getInt("mobs.villager.search-radius.nearest-bed-sensor", villagerNearestBedSensorSearchRadius); - } - - public boolean vindicatorRidable = false;