From a90a4730d672968428e371f024c8317b64eba9af Mon Sep 17 00:00:00 2001 From: granny Date: Wed, 1 May 2024 00:53:07 -0700 Subject: [PATCH] re-add persistent-tileentity-display-names-and-lore as two options --- patches/server/0002-Purpur-config-files.patch | 6 +- ...nt-BlockEntity-Lore-and-DisplayName.patch} | 150 +++------- ...-and-twisting-vines-configurable-ma.patch} | 2 +- ...=> 0217-Mobs-always-drop-experience.patch} | 274 +++++++++--------- ...ne-API.patch => 0218-Grindstone-API.patch} | 2 +- ...e-to-replant-crops-and-nether-warts.patch} | 6 +- ...urtle-eggs-random-tick-crack-chance.patch} | 4 +- ...=> 0221-Mob-head-visibility-percent.patch} | 20 +- ...able-valid-characters-for-usernames.patch} | 2 +- ...Shears-can-have-looting-enchantment.patch} | 2 +- ...Stop-bees-from-dying-after-stinging.patch} | 6 +- ...ounts-in-beehives-to-Purpur-clients.patch} | 2 +- ...onfigurable-farmland-trample-height.patch} | 6 +- ...onfigurable-player-pickup-exp-delay.patch} | 6 +- ...ng.patch => 0228-Allow-void-trading.patch} | 6 +- ...h => 0229-Configurable-phantom-size.patch} | 6 +- ....patch => 0230-Max-joins-per-second.patch} | 2 +- ...figurable-minimum-demand-for-trades.patch} | 6 +- ... => 0232-Lobotomize-stuck-villagers.patch} | 6 +- ...ion-for-villager-display-trade-item.patch} | 6 +- ...wner-not-spawning-water-animals-cor.patch} | 4 +- ...ig-for-mob-last-hurt-by-player-time.patch} | 8 +- ...=> 0236-Anvil-repair-damage-options.patch} | 4 +- ...-turtle-egg-trampling-with-feather-.patch} | 4 +- ...d-toggle-for-enchant-level-clamping.patch} | 2 +- ...kip-junit-tests-for-purpur-commands.patch} | 0 ...rable-search-radius-for-villagers-t.patch} | 6 +- ...ge.patch => 0241-Stonecutter-damage.patch} | 8 +- ...le-damage-settings-for-magma-blocks.patch} | 4 +- ...243-Add-config-for-snow-on-blue-ice.patch} | 4 +- ... => 0244-Skeletons-eat-wither-roses.patch} | 6 +- ...45-Enchantment-Table-Persists-Lapis.patch} | 4 +- ...ofiler.patch => 0246-Spark-Profiler.patch} | 0 ...-disable-kick-for-out-of-order-chat.patch} | 2 +- ...for-sculk-shrieker-can_summon-state.patch} | 4 +- ...=> 0249-Config-to-not-let-coral-die.patch} | 4 +- ...ch => 0250-Add-local-difficulty-api.patch} | 0 ...251-Add-toggle-for-RNG-manipulation.patch} | 4 +- ...imings.patch => 0252-Remove-Timings.patch} | 0 ...atch => 0253-Remove-Mojang-Profiler.patch} | 2 +- ...r-output-for-invalid-movement-kicks.patch} | 0 ...d-Bee-API.patch => 0255-Add-Bee-API.patch} | 0 ...-API.patch => 0256-Debug-Marker-API.patch} | 0 ...g-option-to-ignore-creative-players.patch} | 6 +- ...58-Add-skeleton-bow-accuracy-option.patch} | 6 +- ....patch => 0259-Add-death-screen-API.patch} | 0 ...0-Implement-ram-and-rambar-commands.patch} | 2 +- ...n-to-fix-MC-3304-projectile-looting.patch} | 2 +- ...Configurable-block-blast-resistance.patch} | 2 +- ...gurable-block-fall-damage-modifiers.patch} | 6 +- ...uage-API.patch => 0264-Language-API.patch} | 0 ... 0265-Milk-Keeps-Beneficial-Effects.patch} | 12 +- ...s-not-looking-up-and-down-when-stra.patch} | 0 ...d-log-suppression-for-LibraryLoader.patch} | 2 +- ...ow-creeper-to-encircle-target-when-.patch} | 6 +- ...API.patch => 0269-Fire-Immunity-API.patch} | 0 ...eport-to-spawn-on-nether-ceiling-da.patch} | 6 +- ...t.patch => 0271-Added-got-ram-event.patch} | 0 ... 0272-Log-skipped-entity-s-position.patch} | 0 ....patch => 0273-End-Crystal-Cramming.patch} | 6 +- ...eacon-effects-when-covered-by-tinte.patch} | 4 +- ...ute-clamping-and-armor-limit-config.patch} | 2 +- ...ig-to-remove-explosion-radius-clamp.patch} | 4 +- ...ble-sugarcane-cactus-and-netherwart.patch} | 4 +- ....patch => 0278-Add-PreExplodeEvents.patch} | 0 ...9-Improve-output-of-plugins-command.patch} | 0 ...atch => 0280-Add-mending-multiplier.patch} | 4 +- ....patch => 0281-Make-GUI-Great-Again.patch} | 0 ...ee-API.patch => 0282-Stored-Bee-API.patch} | 0 ...patch => 0283-Shears-can-defuse-TNT.patch} | 4 +- ...-API.patch => 0284-Explorer-Map-API.patch} | 0 ...Option-Ocelot-Spawn-Under-Sea-Level.patch} | 6 +- ...-piglins-to-ignore-gold-trimmed-arm.patch} | 6 +- ...ways-showing-item-in-player-death-m.patch} | 2 +- ...0288-place-end-crystal-on-any-block.patch} | 6 +- ...able-the-copper-oxidation-proximity.patch} | 6 +- ...0-register-minecraft-debug-commands.patch} | 2 +- ...Configurable-villager-search-radius.patch} | 6 +- 78 files changed, 323 insertions(+), 379 deletions(-) rename patches/{dropped-server/0216-Persistent-BlockEntity-Lore-and-DisplayName.patch => server/0215-Persistent-BlockEntity-Lore-and-DisplayName.patch} (53%) rename patches/server/{0215-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch => 0216-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch} (99%) rename patches/server/{0216-Mobs-always-drop-experience.patch => 0217-Mobs-always-drop-experience.patch} (94%) rename patches/server/{0217-Grindstone-API.patch => 0218-Grindstone-API.patch} (95%) rename patches/server/{0218-Ability-for-hoe-to-replant-crops-and-nether-warts.patch => 0219-Ability-for-hoe-to-replant-crops-and-nether-warts.patch} (96%) rename patches/server/{0219-Turtle-eggs-random-tick-crack-chance.patch => 0220-Turtle-eggs-random-tick-crack-chance.patch} (93%) rename patches/server/{0220-Mob-head-visibility-percent.patch => 0221-Mob-head-visibility-percent.patch} (90%) rename patches/server/{0221-Configurable-valid-characters-for-usernames.patch => 0222-Configurable-valid-characters-for-usernames.patch} (94%) rename patches/server/{0222-Shears-can-have-looting-enchantment.patch => 0223-Shears-can-have-looting-enchantment.patch} (99%) rename patches/server/{0223-Stop-bees-from-dying-after-stinging.patch => 0224-Stop-bees-from-dying-after-stinging.patch} (90%) rename patches/server/{0224-Give-bee-counts-in-beehives-to-Purpur-clients.patch => 0225-Give-bee-counts-in-beehives-to-Purpur-clients.patch} (98%) rename patches/server/{0225-Configurable-farmland-trample-height.patch => 0226-Configurable-farmland-trample-height.patch} (94%) rename patches/server/{0226-Configurable-player-pickup-exp-delay.patch => 0227-Configurable-player-pickup-exp-delay.patch} (95%) rename patches/server/{0227-Allow-void-trading.patch => 0228-Allow-void-trading.patch} (93%) rename patches/server/{0228-Configurable-phantom-size.patch => 0229-Configurable-phantom-size.patch} (93%) rename patches/server/{0229-Max-joins-per-second.patch => 0230-Max-joins-per-second.patch} (96%) rename patches/server/{0230-Configurable-minimum-demand-for-trades.patch => 0231-Configurable-minimum-demand-for-trades.patch} (94%) rename patches/server/{0231-Lobotomize-stuck-villagers.patch => 0232-Lobotomize-stuck-villagers.patch} (97%) rename patches/server/{0232-Option-for-villager-display-trade-item.patch => 0233-Option-for-villager-display-trade-item.patch} (92%) rename patches/server/{0233-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch => 0234-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch} (93%) rename patches/server/{0234-Config-for-mob-last-hurt-by-player-time.patch => 0235-Config-for-mob-last-hurt-by-player-time.patch} (92%) rename patches/server/{0235-Anvil-repair-damage-options.patch => 0236-Anvil-repair-damage-options.patch} (97%) rename patches/server/{0236-Option-to-disable-turtle-egg-trampling-with-feather-.patch => 0237-Option-to-disable-turtle-egg-trampling-with-feather-.patch} (94%) rename patches/server/{0237-Add-toggle-for-enchant-level-clamping.patch => 0238-Add-toggle-for-enchant-level-clamping.patch} (98%) rename patches/server/{0238-Skip-junit-tests-for-purpur-commands.patch => 0239-Skip-junit-tests-for-purpur-commands.patch} (100%) rename patches/server/{0239-Implement-configurable-search-radius-for-villagers-t.patch => 0240-Implement-configurable-search-radius-for-villagers-t.patch} (93%) rename patches/server/{0240-Stonecutter-damage.patch => 0241-Stonecutter-damage.patch} (96%) rename patches/server/{0241-Configurable-damage-settings-for-magma-blocks.patch => 0242-Configurable-damage-settings-for-magma-blocks.patch} (93%) rename patches/server/{0242-Add-config-for-snow-on-blue-ice.patch => 0243-Add-config-for-snow-on-blue-ice.patch} (93%) rename patches/server/{0243-Skeletons-eat-wither-roses.patch => 0244-Skeletons-eat-wither-roses.patch} (96%) rename patches/server/{0244-Enchantment-Table-Persists-Lapis.patch => 0245-Enchantment-Table-Persists-Lapis.patch} (97%) rename patches/server/{0245-Spark-Profiler.patch => 0246-Spark-Profiler.patch} (100%) rename patches/server/{0246-Option-to-disable-kick-for-out-of-order-chat.patch => 0247-Option-to-disable-kick-for-out-of-order-chat.patch} (95%) rename patches/server/{0247-Config-for-sculk-shrieker-can_summon-state.patch => 0248-Config-for-sculk-shrieker-can_summon-state.patch} (92%) rename patches/server/{0248-Config-to-not-let-coral-die.patch => 0249-Config-to-not-let-coral-die.patch} (94%) rename patches/server/{0249-Add-local-difficulty-api.patch => 0250-Add-local-difficulty-api.patch} (100%) rename patches/server/{0250-Add-toggle-for-RNG-manipulation.patch => 0251-Add-toggle-for-RNG-manipulation.patch} (95%) rename patches/server/{0251-Remove-Timings.patch => 0252-Remove-Timings.patch} (100%) rename patches/server/{0252-Remove-Mojang-Profiler.patch => 0253-Remove-Mojang-Profiler.patch} (99%) rename patches/server/{0253-Add-more-logger-output-for-invalid-movement-kicks.patch => 0254-Add-more-logger-output-for-invalid-movement-kicks.patch} (100%) rename patches/server/{0254-Add-Bee-API.patch => 0255-Add-Bee-API.patch} (100%) rename patches/server/{0255-Debug-Marker-API.patch => 0256-Debug-Marker-API.patch} (100%) rename patches/server/{0256-mob-spawning-option-to-ignore-creative-players.patch => 0257-mob-spawning-option-to-ignore-creative-players.patch} (92%) rename patches/server/{0257-Add-skeleton-bow-accuracy-option.patch => 0258-Add-skeleton-bow-accuracy-option.patch} (94%) rename patches/server/{0258-Add-death-screen-API.patch => 0259-Add-death-screen-API.patch} (100%) rename patches/server/{0259-Implement-ram-and-rambar-commands.patch => 0260-Implement-ram-and-rambar-commands.patch} (99%) rename patches/server/{0260-Add-an-option-to-fix-MC-3304-projectile-looting.patch => 0261-Add-an-option-to-fix-MC-3304-projectile-looting.patch} (98%) rename patches/server/{0261-Configurable-block-blast-resistance.patch => 0262-Configurable-block-blast-resistance.patch} (96%) rename patches/server/{0262-Configurable-block-fall-damage-modifiers.patch => 0263-Configurable-block-fall-damage-modifiers.patch} (96%) rename patches/server/{0263-Language-API.patch => 0264-Language-API.patch} (100%) rename patches/server/{0264-Milk-Keeps-Beneficial-Effects.patch => 0265-Milk-Keeps-Beneficial-Effects.patch} (86%) rename patches/server/{0265-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch => 0266-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch} (100%) rename patches/server/{0266-Add-log-suppression-for-LibraryLoader.patch => 0267-Add-log-suppression-for-LibraryLoader.patch} (94%) rename patches/server/{0267-Add-option-to-allow-creeper-to-encircle-target-when-.patch => 0268-Add-option-to-allow-creeper-to-encircle-target-when-.patch} (92%) rename patches/server/{0268-Fire-Immunity-API.patch => 0269-Fire-Immunity-API.patch} (100%) rename patches/server/{0269-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch => 0270-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch} (93%) rename patches/server/{0270-Added-got-ram-event.patch => 0271-Added-got-ram-event.patch} (100%) rename patches/server/{0271-Log-skipped-entity-s-position.patch => 0272-Log-skipped-entity-s-position.patch} (100%) rename patches/server/{0272-End-Crystal-Cramming.patch => 0273-End-Crystal-Cramming.patch} (91%) rename patches/server/{0273-Option-to-allow-beacon-effects-when-covered-by-tinte.patch => 0274-Option-to-allow-beacon-effects-when-covered-by-tinte.patch} (95%) rename patches/server/{0274-Add-attribute-clamping-and-armor-limit-config.patch => 0275-Add-attribute-clamping-and-armor-limit-config.patch} (97%) rename patches/server/{0275-Config-to-remove-explosion-radius-clamp.patch => 0276-Config-to-remove-explosion-radius-clamp.patch} (93%) rename patches/server/{0276-bonemealable-sugarcane-cactus-and-netherwart.patch => 0277-bonemealable-sugarcane-cactus-and-netherwart.patch} (98%) rename patches/server/{0277-Add-PreExplodeEvents.patch => 0278-Add-PreExplodeEvents.patch} (100%) rename patches/server/{0278-Improve-output-of-plugins-command.patch => 0279-Improve-output-of-plugins-command.patch} (100%) rename patches/server/{0279-Add-mending-multiplier.patch => 0280-Add-mending-multiplier.patch} (93%) rename patches/server/{0280-Make-GUI-Great-Again.patch => 0281-Make-GUI-Great-Again.patch} (100%) rename patches/server/{0281-Stored-Bee-API.patch => 0282-Stored-Bee-API.patch} (100%) rename patches/server/{0282-Shears-can-defuse-TNT.patch => 0283-Shears-can-defuse-TNT.patch} (96%) rename patches/server/{0283-Explorer-Map-API.patch => 0284-Explorer-Map-API.patch} (100%) rename patches/server/{0284-Option-Ocelot-Spawn-Under-Sea-Level.patch => 0285-Option-Ocelot-Spawn-Under-Sea-Level.patch} (91%) rename patches/server/{0285-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch => 0286-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch} (93%) rename patches/server/{0286-Add-option-for-always-showing-item-in-player-death-m.patch => 0287-Add-option-for-always-showing-item-in-player-death-m.patch} (97%) rename patches/server/{0287-place-end-crystal-on-any-block.patch => 0288-place-end-crystal-on-any-block.patch} (91%) rename patches/server/{0288-Add-option-to-disable-the-copper-oxidation-proximity.patch => 0289-Add-option-to-disable-the-copper-oxidation-proximity.patch} (92%) rename patches/server/{0289-register-minecraft-debug-commands.patch => 0290-register-minecraft-debug-commands.patch} (96%) rename patches/server/{0290-Configurable-villager-search-radius.patch => 0291-Configurable-villager-search-radius.patch} (95%) diff --git a/patches/server/0002-Purpur-config-files.patch b/patches/server/0002-Purpur-config-files.patch index a8730427e..d33e07709 100644 --- a/patches/server/0002-Purpur-config-files.patch +++ b/patches/server/0002-Purpur-config-files.patch @@ -179,7 +179,7 @@ index c097f5d5fbd51cbbc01bbd54101905c59b3f3a4c..66a3b28d7b943d443ff66fdcfbce6e52 .withRequiredArg() diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java new file mode 100644 -index 0000000000000000000000000000000000000000..be3b733d7a641a7651ace1b3bd5ac56f26db5947 +index 0000000000000000000000000000000000000000..19161d9736b626811423deefedd045abe60360cc --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -0,0 +1,175 @@ @@ -260,8 +260,8 @@ index 0000000000000000000000000000000000000000..be3b733d7a641a7651ace1b3bd5ac56f + commands = new HashMap<>(); + commands.put("purpur", new PurpurCommand("purpur")); + -+ version = getInt("config-version", 34); -+ set("config-version", 34); ++ version = getInt("config-version", 35); ++ set("config-version", 35); + + readConfig(PurpurConfig.class, null); + diff --git a/patches/dropped-server/0216-Persistent-BlockEntity-Lore-and-DisplayName.patch b/patches/server/0215-Persistent-BlockEntity-Lore-and-DisplayName.patch similarity index 53% rename from patches/dropped-server/0216-Persistent-BlockEntity-Lore-and-DisplayName.patch rename to patches/server/0215-Persistent-BlockEntity-Lore-and-DisplayName.patch index d0ae1607d..7fc9b5408 100644 --- a/patches/dropped-server/0216-Persistent-BlockEntity-Lore-and-DisplayName.patch +++ b/patches/server/0215-Persistent-BlockEntity-Lore-and-DisplayName.patch @@ -7,28 +7,20 @@ Makes it so that when a BlockEntity is placed in the world and then broken, the dropped ItemStack retains any original custom display name/lore. diff --git a/src/main/java/net/minecraft/world/item/BlockItem.java b/src/main/java/net/minecraft/world/item/BlockItem.java -index f713734efaad4312be270d808e79f0e562c84466..887fca2931763ca4572ab89473a5303addc6f795 100644 +index 2649188930653610b8aaaeb18797c80879cd572a..7572c289758001c7417a192f0e6e994ffa8408b3 100644 --- a/src/main/java/net/minecraft/world/item/BlockItem.java +++ b/src/main/java/net/minecraft/world/item/BlockItem.java -@@ -158,7 +158,24 @@ public class BlockItem extends Item { +@@ -157,7 +157,16 @@ public class BlockItem extends Item { } protected boolean updateCustomBlockEntityTag(BlockPos pos, Level world, @Nullable Player player, ItemStack stack, BlockState state) { - return BlockItem.updateCustomBlockEntityTag(world, player, pos, stack); + // Purpur start + boolean handled = updateCustomBlockEntityTag(world, player, pos, stack); -+ if (world.purpurConfig.persistentTileEntityDisplayNames && stack.hasTag()) { -+ CompoundTag display = stack.getTagElement("display"); -+ if (display != null) { -+ BlockEntity blockEntity = world.getBlockEntity(pos); -+ if (blockEntity != null) { -+ if (display.contains("Name", 8)) { -+ blockEntity.setPersistentDisplayName(display.getString("Name")); -+ } -+ if (display.contains("Lore", 9)) { -+ blockEntity.setPersistentLore(display.getList("Lore", 8)); -+ } -+ } ++ if (world.purpurConfig.persistentTileEntityLore) { ++ BlockEntity blockEntity1 = world.getBlockEntity(pos); ++ if (blockEntity1 != null) { ++ blockEntity1.setPersistentLore(stack.getOrDefault(DataComponents.LORE, net.minecraft.world.item.component.ItemLore.EMPTY)); + } + } + return handled; @@ -37,47 +29,33 @@ index f713734efaad4312be270d808e79f0e562c84466..887fca2931763ca4572ab89473a5303a @Nullable 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 6f7e90d406b088fee0eb254f8042bd404d8f36fa..49dad044ac21bbfe2e60be76757ada4750b607b4 100644 +index 6f7e90d406b088fee0eb254f8042bd404d8f36fa..7ffe51eedc9d086424cf450026bdc260249864c4 100644 --- a/src/main/java/net/minecraft/world/level/block/Block.java +++ b/src/main/java/net/minecraft/world/level/block/Block.java -@@ -63,6 +63,13 @@ import net.minecraft.world.phys.shapes.Shapes; - import net.minecraft.world.phys.shapes.VoxelShape; - import org.slf4j.Logger; - -+// Purpur start -+import net.minecraft.nbt.CompoundTag; -+import net.minecraft.nbt.ListTag; -+import net.minecraft.nbt.StringTag; -+import net.minecraft.world.Nameable; -+// Purpur end -+ - public class Block extends BlockBehaviour implements ItemLike { - - public static final MapCodec CODEC = simpleCodec(Block::new); -@@ -312,7 +319,7 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -312,7 +312,7 @@ public class Block extends BlockBehaviour implements ItemLike { public static void dropResources(BlockState state, LevelAccessor world, BlockPos pos, @Nullable BlockEntity blockEntity) { if (world instanceof ServerLevel) { Block.getDrops(state, (ServerLevel) world, pos, blockEntity).forEach((itemstack) -> { - Block.popResource((ServerLevel) world, pos, itemstack); -+ Block.popResource((ServerLevel) world, pos, applyDisplayNameAndLoreFromTile(itemstack, blockEntity)); // Purpur ++ Block.popResource((ServerLevel) world, pos, applyLoreFromTile(itemstack, blockEntity)); // Purpur }); state.spawnAfterBreak((ServerLevel) world, pos, ItemStack.EMPTY, true); } -@@ -331,7 +338,7 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -331,7 +331,7 @@ public class Block extends BlockBehaviour implements ItemLike { event.setExpToDrop(block.getExpDrop(state, serverLevel, pos, net.minecraft.world.item.ItemStack.EMPTY, true)); // Paper - Properly handle xp dropping event.callEvent(); for (org.bukkit.inventory.ItemStack drop : event.getDrops()) { - popResource(serverLevel, pos, org.bukkit.craftbukkit.inventory.CraftItemStack.asNMSCopy(drop)); -+ popResource(serverLevel, pos, applyDisplayNameAndLoreFromTile(org.bukkit.craftbukkit.inventory.CraftItemStack.asNMSCopy(drop), blockEntity)); // Purpur ++ popResource(serverLevel, pos, applyLoreFromTile(org.bukkit.craftbukkit.inventory.CraftItemStack.asNMSCopy(drop), blockEntity)); // Purpur } state.spawnAfterBreak(serverLevel, pos, ItemStack.EMPTY, false); // Paper - Properly handle xp dropping block.popExperience(serverLevel, pos, event.getExpToDrop()); // Paper - Properly handle xp dropping -@@ -348,13 +355,53 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -348,13 +348,32 @@ public class Block extends BlockBehaviour implements ItemLike { // Paper end - Properly handle xp dropping if (world instanceof ServerLevel) { Block.getDrops(state, (ServerLevel) world, pos, blockEntity, entity, tool).forEach((itemstack1) -> { - Block.popResource(world, pos, itemstack1); -+ Block.popResource(world, pos, applyDisplayNameAndLoreFromTile(itemstack1, blockEntity)); // Purpur ++ Block.popResource(world, pos, applyLoreFromTile(itemstack1, blockEntity)); // Purpur }); state.spawnAfterBreak((ServerLevel) world, pos, tool, dropExperience); // Paper - Properly handle xp dropping } @@ -85,39 +63,18 @@ index 6f7e90d406b088fee0eb254f8042bd404d8f36fa..49dad044ac21bbfe2e60be76757ada47 } + // Purpur start -+ private static ItemStack applyDisplayNameAndLoreFromTile(ItemStack stack, BlockEntity blockEntity) { ++ private static ItemStack applyLoreFromTile(ItemStack stack, @Nullable BlockEntity blockEntity) { + if (stack.getItem() instanceof BlockItem) { -+ if (blockEntity != null && blockEntity.getLevel() instanceof ServerLevel && blockEntity.getLevel().purpurConfig.persistentTileEntityDisplayNames) { -+ String name = blockEntity.getPersistentDisplayName(); -+ ListTag lore = blockEntity.getPersistentLore(); -+ if (blockEntity instanceof Nameable) { -+ Nameable namedTile = (Nameable) blockEntity; -+ if (namedTile.hasCustomName()) { -+ name = Component.Serializer.toJson(namedTile.getCustomName()); -+ } ++ if (blockEntity != null && blockEntity.getLevel() instanceof ServerLevel) { ++ net.minecraft.world.item.component.ItemLore lore = blockEntity.getPersistentLore(); ++ net.minecraft.core.component.DataComponentPatch.Builder builder = net.minecraft.core.component.DataComponentPatch.builder(); ++ if (blockEntity.getLevel().purpurConfig.persistentTileEntityLore && lore != null) { ++ builder.set(net.minecraft.core.component.DataComponents.LORE, lore); + } -+ -+ if (name != null || lore != null) { -+ CompoundTag display = stack.getTagElement("display"); -+ if (display == null) { -+ display = new CompoundTag(); -+ } -+ -+ if (name != null) { -+ display.put("Name", StringTag.valueOf(name)); -+ } -+ if (lore != null) { -+ display.put("Lore", lore); -+ } -+ -+ CompoundTag tag = stack.getTag(); -+ if (tag == null) { -+ tag = new CompoundTag(); -+ } -+ tag.put("display", display); -+ -+ stack.setTag(tag); ++ if (!blockEntity.getLevel().purpurConfig.persistentTileEntityDisplayName) { ++ builder.remove(net.minecraft.core.component.DataComponents.CUSTOM_NAME); + } ++ stack.applyComponents(builder.build()); + } + } + return stack; @@ -128,44 +85,31 @@ index 6f7e90d406b088fee0eb254f8042bd404d8f36fa..49dad044ac21bbfe2e60be76757ada47 double d0 = (double) EntityType.ITEM.getHeight() / 2.0D; double d1 = (double) pos.getX() + 0.5D + Mth.nextDouble(world.random, -0.25D, 0.25D); diff --git a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java -index b0421823684ff6b9474b81675742d2ee3b17edf7..4ea15e17a1393864422edb6d5c57962651abf69a 100644 +index 7963afff4b32a0e46be9bdeb413657718cfc14f5..5168e8e9ebb54b6c00acb7f2939262eb06a7426d 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java -@@ -17,6 +17,8 @@ import net.minecraft.core.component.PatchedDataComponentMap; - import net.minecraft.core.registries.BuiltInRegistries; - import net.minecraft.nbt.CompoundTag; - import net.minecraft.nbt.NbtOps; -+import net.minecraft.nbt.ListTag; -+import net.minecraft.nbt.StringTag; - import net.minecraft.network.protocol.Packet; - import net.minecraft.network.protocol.game.ClientGamePacketListener; - import net.minecraft.resources.ResourceLocation; -@@ -86,6 +88,14 @@ public abstract class BlockEntity { +@@ -87,6 +87,12 @@ public abstract class BlockEntity { if (persistentDataTag instanceof CompoundTag) { this.persistentDataContainer.putAll((CompoundTag) persistentDataTag); } + // Purpur start -+ if (nbt.contains("Purpur.persistentDisplayName")) { -+ this.persistentDisplayName = nbt.getString("Purpur.persistentDisplayName"); -+ } + if (nbt.contains("Purpur.persistentLore")) { -+ this.persistentLore = nbt.getList("Purpur.persistentLore", 8); ++ net.minecraft.world.item.component.ItemLore.CODEC.decode(net.minecraft.nbt.NbtOps.INSTANCE, nbt.getCompound("Purpur.persistentLore")).result() ++ .ifPresent(tag -> this.persistentLore = tag.getFirst()); + } + // Purpur end } // CraftBukkit end -@@ -102,6 +112,17 @@ public abstract class BlockEntity { +@@ -103,6 +109,15 @@ public abstract class BlockEntity { this.loadAdditional(nbt, registryLookup); } + // Purpur start + protected void saveAdditional(CompoundTag nbt) { -+ if (this.persistentDisplayName != null) { -+ nbt.put("Purpur.persistentDisplayName", StringTag.valueOf(this.persistentDisplayName)); -+ } + if (this.persistentLore != null) { -+ nbt.put("Purpur.persistentLore", this.persistentLore); ++ net.minecraft.world.item.component.ItemLore.CODEC.encodeStart(net.minecraft.nbt.NbtOps.INSTANCE, this.persistentLore).result() ++ .ifPresent(tag -> nbt.put("Purpur.persistentLore", tag)); + } + } + // Purpur end @@ -173,48 +117,48 @@ index b0421823684ff6b9474b81675742d2ee3b17edf7..4ea15e17a1393864422edb6d5c579626 protected void saveAdditional(CompoundTag nbt, HolderLookup.Provider registryLookup) {} public final CompoundTag saveWithFullMetadata(HolderLookup.Provider registryLookup) { -@@ -381,4 +402,24 @@ public abstract class BlockEntity { +@@ -397,4 +412,16 @@ public abstract class BlockEntity { T getOrDefault(DataComponentType type, T fallback); } + // Purpur start -+ private String persistentDisplayName = null; -+ private ListTag persistentLore = null; ++ @Nullable ++ private net.minecraft.world.item.component.ItemLore persistentLore = null; + -+ public void setPersistentDisplayName(String json) { -+ this.persistentDisplayName = json; -+ } -+ -+ public void setPersistentLore(ListTag lore) { ++ public void setPersistentLore(net.minecraft.world.item.component.ItemLore lore) { + this.persistentLore = lore; + } + -+ public String getPersistentDisplayName() { -+ return this.persistentDisplayName; -+ } -+ -+ public ListTag getPersistentLore() { ++ public @org.jetbrains.annotations.Nullable net.minecraft.world.item.component.ItemLore getPersistentLore() { + return this.persistentLore; + } + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1c77929516d70407a281a0899c6722cc4210eb79..b4d5ae4025d315cfe0e19fa1b077d1c5956523ba 100644 +index 8d4c3c4a06d40841e8446485364393e36e686fdd..abe3614f2286db8945bc6c4eadd01ec8a7f93555 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -130,6 +130,7 @@ public class PurpurWorldConfig { +@@ -130,6 +130,8 @@ public class PurpurWorldConfig { public boolean milkCuresBadOmen = true; public boolean noteBlockIgnoreAbove = false; public boolean persistentDroppableEntityDisplayNames = true; -+ public boolean persistentTileEntityDisplayNames = false; ++ public boolean persistentTileEntityLore = false; ++ public boolean persistentTileEntityDisplayName = true; public boolean projectilesBypassMobGriefing = false; public boolean tickFluids = true; public double mobsBlindnessMultiplier = 1; -@@ -153,6 +154,7 @@ public class PurpurWorldConfig { +@@ -153,6 +155,14 @@ public class PurpurWorldConfig { imposeTeleportRestrictionsOnGateways = getBoolean("gameplay-mechanics.impose-teleport-restrictions-on-gateways", imposeTeleportRestrictionsOnGateways); milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); noteBlockIgnoreAbove = getBoolean("gameplay-mechanics.note-block-ignore-above", noteBlockIgnoreAbove); -+ persistentTileEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-tileentity-display-names-and-lore", persistentTileEntityDisplayNames); ++ if (PurpurConfig.version < 35) { ++ boolean oldVal = getBoolean("gameplay-mechanics.persistent-tileentity-display-names-and-lore", persistentTileEntityLore); ++ set("gameplay-mechanics.persistent-tileentity-display-names-and-lore", null); ++ set("gameplay-mechanics.persistent-tileentity-lore", oldVal); ++ set("gameplay-mechanics.persistent-tileentity-display-name", !oldVal); ++ } ++ persistentTileEntityLore = getBoolean("gameplay-mechanics.persistent-tileentity-lore", persistentTileEntityLore); ++ persistentTileEntityDisplayName = getBoolean("gameplay-mechanics.persistent-tileentity-display-name", persistentTileEntityDisplayName); persistentDroppableEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-droppable-entity-display-names", persistentDroppableEntityDisplayNames); projectilesBypassMobGriefing = getBoolean("gameplay-mechanics.projectiles-bypass-mob-griefing", projectilesBypassMobGriefing); tickFluids = getBoolean("gameplay-mechanics.tick-fluids", tickFluids); diff --git a/patches/server/0215-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch b/patches/server/0216-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch similarity index 99% rename from patches/server/0215-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch rename to patches/server/0216-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch index e0c4575a3..68ed8eff9 100644 --- a/patches/server/0215-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch +++ b/patches/server/0216-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch @@ -135,7 +135,7 @@ index 3dec5a082606ee35a8c8d7f746480262d6a189c5..b2f6ccae9576c176263e51a232e17a08 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 64c62e4abefb7e95e881fa1d8918e43ae48eb1dd..a1fa16fca204098fd2211a4c206299356fc97724 100644 +index f79d0e3907dd89ff0abf8220392bb4e23cf9003e..9ded52a0022e33a6b69191b5fa758d6cc7eb076f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -312,6 +312,10 @@ public class PurpurConfig { diff --git a/patches/server/0216-Mobs-always-drop-experience.patch b/patches/server/0217-Mobs-always-drop-experience.patch similarity index 94% rename from patches/server/0216-Mobs-always-drop-experience.patch rename to patches/server/0217-Mobs-always-drop-experience.patch index c9e873118..dc153d2e5 100644 --- a/patches/server/0216-Mobs-always-drop-experience.patch +++ b/patches/server/0217-Mobs-always-drop-experience.patch @@ -1157,10 +1157,10 @@ index 0d11200ab580cc306602c29c61f7619565d8261d..62f5e5cfe5745deced2811d14d0c7ebb protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6e0913991 100644 +index abe3614f2286db8945bc6c4eadd01ec8a7f93555..6e4990ef903e7a492da953662a2a2a99b051baca 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1093,12 +1093,14 @@ public class PurpurWorldConfig { +@@ -1103,12 +1103,14 @@ public class PurpurWorldConfig { public double axolotlMaxHealth = 14.0D; public int axolotlBreedingTicks = 6000; public boolean axolotlTakeDamageFromWater = false; @@ -1175,7 +1175,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean batRidable = false; -@@ -1114,6 +1116,7 @@ public class PurpurWorldConfig { +@@ -1124,6 +1126,7 @@ public class PurpurWorldConfig { public double batArmorToughness = 0.0D; public double batAttackKnockback = 0.0D; public boolean batTakeDamageFromWater = false; @@ -1183,7 +1183,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void batSettings() { batRidable = getBoolean("mobs.bat.ridable", batRidable); batRidableInWater = getBoolean("mobs.bat.ridable-in-water", batRidableInWater); -@@ -1133,6 +1136,7 @@ public class PurpurWorldConfig { +@@ -1143,6 +1146,7 @@ public class PurpurWorldConfig { batArmorToughness = getDouble("mobs.bat.attributes.armor_toughness", batArmorToughness); batAttackKnockback = getDouble("mobs.bat.attributes.attack_knockback", batAttackKnockback); batTakeDamageFromWater = getBoolean("mobs.bat.takes-damage-from-water", batTakeDamageFromWater); @@ -1191,7 +1191,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean beeRidable = false; -@@ -1144,6 +1148,7 @@ public class PurpurWorldConfig { +@@ -1154,6 +1158,7 @@ public class PurpurWorldConfig { public boolean beeTakeDamageFromWater = false; public boolean beeCanWorkAtNight = false; public boolean beeCanWorkInRain = false; @@ -1199,7 +1199,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -1159,6 +1164,7 @@ public class PurpurWorldConfig { +@@ -1169,6 +1174,7 @@ public class PurpurWorldConfig { beeTakeDamageFromWater = getBoolean("mobs.bee.takes-damage-from-water", beeTakeDamageFromWater); beeCanWorkAtNight = getBoolean("mobs.bee.can-work-at-night", beeCanWorkAtNight); beeCanWorkInRain = getBoolean("mobs.bee.can-work-in-rain", beeCanWorkInRain); @@ -1207,7 +1207,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean blazeRidable = false; -@@ -1167,6 +1173,7 @@ public class PurpurWorldConfig { +@@ -1177,6 +1183,7 @@ public class PurpurWorldConfig { public double blazeMaxY = 320D; public double blazeMaxHealth = 20.0D; public boolean blazeTakeDamageFromWater = true; @@ -1215,7 +1215,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void blazeSettings() { blazeRidable = getBoolean("mobs.blaze.ridable", blazeRidable); blazeRidableInWater = getBoolean("mobs.blaze.ridable-in-water", blazeRidableInWater); -@@ -1179,6 +1186,7 @@ public class PurpurWorldConfig { +@@ -1189,6 +1196,7 @@ public class PurpurWorldConfig { } blazeMaxHealth = getDouble("mobs.blaze.attributes.max_health", blazeMaxHealth); blazeTakeDamageFromWater = getBoolean("mobs.blaze.takes-damage-from-water", blazeTakeDamageFromWater); @@ -1223,7 +1223,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean camelRidableInWater = false; -@@ -1210,6 +1218,7 @@ public class PurpurWorldConfig { +@@ -1220,6 +1228,7 @@ public class PurpurWorldConfig { public int catBreedingTicks = 6000; public DyeColor catDefaultCollarColor = DyeColor.RED; public boolean catTakeDamageFromWater = false; @@ -1231,7 +1231,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -1230,6 +1239,7 @@ public class PurpurWorldConfig { +@@ -1240,6 +1249,7 @@ public class PurpurWorldConfig { catDefaultCollarColor = DyeColor.RED; } catTakeDamageFromWater = getBoolean("mobs.cat.takes-damage-from-water", catTakeDamageFromWater); @@ -1239,7 +1239,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean caveSpiderRidable = false; -@@ -1237,6 +1247,7 @@ public class PurpurWorldConfig { +@@ -1247,6 +1257,7 @@ public class PurpurWorldConfig { public boolean caveSpiderControllable = true; public double caveSpiderMaxHealth = 12.0D; public boolean caveSpiderTakeDamageFromWater = false; @@ -1247,7 +1247,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void caveSpiderSettings() { caveSpiderRidable = getBoolean("mobs.cave_spider.ridable", caveSpiderRidable); caveSpiderRidableInWater = getBoolean("mobs.cave_spider.ridable-in-water", caveSpiderRidableInWater); -@@ -1248,6 +1259,7 @@ public class PurpurWorldConfig { +@@ -1258,6 +1269,7 @@ public class PurpurWorldConfig { } caveSpiderMaxHealth = getDouble("mobs.cave_spider.attributes.max_health", caveSpiderMaxHealth); caveSpiderTakeDamageFromWater = getBoolean("mobs.cave_spider.takes-damage-from-water", caveSpiderTakeDamageFromWater); @@ -1255,7 +1255,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean chickenRidable = false; -@@ -1257,6 +1269,7 @@ public class PurpurWorldConfig { +@@ -1267,6 +1279,7 @@ public class PurpurWorldConfig { public boolean chickenRetaliate = false; public int chickenBreedingTicks = 6000; public boolean chickenTakeDamageFromWater = false; @@ -1263,7 +1263,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -1270,12 +1283,14 @@ public class PurpurWorldConfig { +@@ -1280,12 +1293,14 @@ public class PurpurWorldConfig { chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate); chickenBreedingTicks = getInt("mobs.chicken.breeding-delay-ticks", chickenBreedingTicks); chickenTakeDamageFromWater = getBoolean("mobs.chicken.takes-damage-from-water", chickenTakeDamageFromWater); @@ -1278,7 +1278,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void codSettings() { codRidable = getBoolean("mobs.cod.ridable", codRidable); codControllable = getBoolean("mobs.cod.controllable", codControllable); -@@ -1286,6 +1301,7 @@ public class PurpurWorldConfig { +@@ -1296,6 +1311,7 @@ public class PurpurWorldConfig { } codMaxHealth = getDouble("mobs.cod.attributes.max_health", codMaxHealth); codTakeDamageFromWater = getBoolean("mobs.cod.takes-damage-from-water", codTakeDamageFromWater); @@ -1286,7 +1286,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean cowRidable = false; -@@ -1297,6 +1313,7 @@ public class PurpurWorldConfig { +@@ -1307,6 +1323,7 @@ public class PurpurWorldConfig { public boolean cowTakeDamageFromWater = false; public double cowNaturallyAggressiveToPlayersChance = 0.0D; public double cowNaturallyAggressiveToPlayersDamage = 2.0D; @@ -1294,7 +1294,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void cowSettings() { if (PurpurConfig.version < 22) { double oldValue = getDouble("mobs.cow.naturally-aggressive-to-players-chance", cowNaturallyAggressiveToPlayersChance); -@@ -1317,6 +1334,7 @@ public class PurpurWorldConfig { +@@ -1327,6 +1344,7 @@ public class PurpurWorldConfig { cowTakeDamageFromWater = getBoolean("mobs.cow.takes-damage-from-water", cowTakeDamageFromWater); cowNaturallyAggressiveToPlayersChance = getDouble("mobs.cow.naturally-aggressive-to-players.chance", cowNaturallyAggressiveToPlayersChance); cowNaturallyAggressiveToPlayersDamage = getDouble("mobs.cow.naturally-aggressive-to-players.damage", cowNaturallyAggressiveToPlayersDamage); @@ -1302,7 +1302,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean creeperRidable = false; -@@ -1329,6 +1347,7 @@ public class PurpurWorldConfig { +@@ -1339,6 +1357,7 @@ public class PurpurWorldConfig { public boolean creeperTakeDamageFromWater = false; public boolean creeperExplodeWhenKilled = false; public boolean creeperHealthRadius = false; @@ -1310,7 +1310,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1345,6 +1364,7 @@ public class PurpurWorldConfig { +@@ -1355,6 +1374,7 @@ public class PurpurWorldConfig { creeperTakeDamageFromWater = getBoolean("mobs.creeper.takes-damage-from-water", creeperTakeDamageFromWater); creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled); creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius); @@ -1318,7 +1318,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean dolphinRidable = false; -@@ -1356,6 +1376,7 @@ public class PurpurWorldConfig { +@@ -1366,6 +1386,7 @@ public class PurpurWorldConfig { public boolean dolphinDisableTreasureSearching = false; public boolean dolphinTakeDamageFromWater = false; public double dolphinNaturallyAggressiveToPlayersChance = 0.0D; @@ -1326,7 +1326,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -1371,6 +1392,7 @@ public class PurpurWorldConfig { +@@ -1381,6 +1402,7 @@ public class PurpurWorldConfig { dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching); dolphinTakeDamageFromWater = getBoolean("mobs.dolphin.takes-damage-from-water", dolphinTakeDamageFromWater); dolphinNaturallyAggressiveToPlayersChance = getDouble("mobs.dolphin.naturally-aggressive-to-players-chance", dolphinNaturallyAggressiveToPlayersChance); @@ -1334,7 +1334,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean donkeyRidableInWater = false; -@@ -1382,6 +1404,7 @@ public class PurpurWorldConfig { +@@ -1392,6 +1414,7 @@ public class PurpurWorldConfig { public double donkeyMovementSpeedMax = 0.175D; public int donkeyBreedingTicks = 6000; public boolean donkeyTakeDamageFromWater = false; @@ -1342,7 +1342,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -1399,6 +1422,7 @@ public class PurpurWorldConfig { +@@ -1409,6 +1432,7 @@ public class PurpurWorldConfig { donkeyMovementSpeedMax = getDouble("mobs.donkey.attributes.movement_speed.max", donkeyMovementSpeedMax); donkeyBreedingTicks = getInt("mobs.donkey.breeding-delay-ticks", donkeyBreedingTicks); donkeyTakeDamageFromWater = getBoolean("mobs.donkey.takes-damage-from-water", donkeyTakeDamageFromWater); @@ -1350,7 +1350,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean drownedRidable = false; -@@ -1411,6 +1435,7 @@ public class PurpurWorldConfig { +@@ -1421,6 +1445,7 @@ public class PurpurWorldConfig { public boolean drownedJockeyTryExistingChickens = true; public boolean drownedTakeDamageFromWater = false; public boolean drownedBreakDoors = false; @@ -1358,7 +1358,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -1427,12 +1452,14 @@ public class PurpurWorldConfig { +@@ -1437,12 +1462,14 @@ public class PurpurWorldConfig { drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens); drownedTakeDamageFromWater = getBoolean("mobs.drowned.takes-damage-from-water", drownedTakeDamageFromWater); drownedBreakDoors = getBoolean("mobs.drowned.can-break-doors", drownedBreakDoors); @@ -1373,7 +1373,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void elderGuardianSettings() { elderGuardianRidable = getBoolean("mobs.elder_guardian.ridable", elderGuardianRidable); elderGuardianControllable = getBoolean("mobs.elder_guardian.controllable", elderGuardianControllable); -@@ -1443,6 +1470,7 @@ public class PurpurWorldConfig { +@@ -1453,6 +1480,7 @@ public class PurpurWorldConfig { } elderGuardianMaxHealth = getDouble("mobs.elder_guardian.attributes.max_health", elderGuardianMaxHealth); elderGuardianTakeDamageFromWater = getBoolean("mobs.elder_guardian.takes-damage-from-water", elderGuardianTakeDamageFromWater); @@ -1381,7 +1381,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean enderDragonRidable = false; -@@ -1488,6 +1516,7 @@ public class PurpurWorldConfig { +@@ -1498,6 +1526,7 @@ public class PurpurWorldConfig { public boolean endermanIgnorePlayerDragonHead = false; public boolean endermanDisableStareAggro = false; public boolean endermanIgnoreProjectiles = false; @@ -1389,7 +1389,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1511,6 +1540,7 @@ public class PurpurWorldConfig { +@@ -1521,6 +1550,7 @@ public class PurpurWorldConfig { endermanIgnorePlayerDragonHead = getBoolean("mobs.enderman.ignore-players-wearing-dragon-head", endermanIgnorePlayerDragonHead); endermanDisableStareAggro = getBoolean("mobs.enderman.disable-player-stare-aggression", endermanDisableStareAggro); endermanIgnoreProjectiles = getBoolean("mobs.enderman.ignore-projectiles", endermanIgnoreProjectiles); @@ -1397,7 +1397,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean endermiteRidable = false; -@@ -1518,6 +1548,7 @@ public class PurpurWorldConfig { +@@ -1528,6 +1558,7 @@ public class PurpurWorldConfig { public boolean endermiteControllable = true; public double endermiteMaxHealth = 8.0D; public boolean endermiteTakeDamageFromWater = false; @@ -1405,7 +1405,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void endermiteSettings() { endermiteRidable = getBoolean("mobs.endermite.ridable", endermiteRidable); endermiteRidableInWater = getBoolean("mobs.endermite.ridable-in-water", endermiteRidableInWater); -@@ -1529,6 +1560,7 @@ public class PurpurWorldConfig { +@@ -1539,6 +1570,7 @@ public class PurpurWorldConfig { } endermiteMaxHealth = getDouble("mobs.endermite.attributes.max_health", endermiteMaxHealth); endermiteTakeDamageFromWater = getBoolean("mobs.endermite.takes-damage-from-water", endermiteTakeDamageFromWater); @@ -1413,7 +1413,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean evokerRidable = false; -@@ -1537,6 +1569,7 @@ public class PurpurWorldConfig { +@@ -1547,6 +1579,7 @@ public class PurpurWorldConfig { public double evokerMaxHealth = 24.0D; public boolean evokerBypassMobGriefing = false; public boolean evokerTakeDamageFromWater = false; @@ -1421,7 +1421,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -1549,6 +1582,7 @@ public class PurpurWorldConfig { +@@ -1559,6 +1592,7 @@ public class PurpurWorldConfig { evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth); evokerBypassMobGriefing = getBoolean("mobs.evoker.bypass-mob-griefing", evokerBypassMobGriefing); evokerTakeDamageFromWater = getBoolean("mobs.evoker.takes-damage-from-water", evokerTakeDamageFromWater); @@ -1429,7 +1429,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean foxRidable = false; -@@ -1559,6 +1593,7 @@ public class PurpurWorldConfig { +@@ -1569,6 +1603,7 @@ public class PurpurWorldConfig { public int foxBreedingTicks = 6000; public boolean foxBypassMobGriefing = false; public boolean foxTakeDamageFromWater = false; @@ -1437,7 +1437,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -1573,6 +1608,7 @@ public class PurpurWorldConfig { +@@ -1583,6 +1618,7 @@ public class PurpurWorldConfig { foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks); foxBypassMobGriefing = getBoolean("mobs.fox.bypass-mob-griefing", foxBypassMobGriefing); foxTakeDamageFromWater = getBoolean("mobs.fox.takes-damage-from-water", foxTakeDamageFromWater); @@ -1445,7 +1445,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean frogRidable = false; -@@ -1594,6 +1630,7 @@ public class PurpurWorldConfig { +@@ -1604,6 +1640,7 @@ public class PurpurWorldConfig { public double ghastMaxY = 320D; public double ghastMaxHealth = 10.0D; public boolean ghastTakeDamageFromWater = false; @@ -1453,7 +1453,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void ghastSettings() { ghastRidable = getBoolean("mobs.ghast.ridable", ghastRidable); ghastRidableInWater = getBoolean("mobs.ghast.ridable-in-water", ghastRidableInWater); -@@ -1606,6 +1643,7 @@ public class PurpurWorldConfig { +@@ -1616,6 +1653,7 @@ public class PurpurWorldConfig { } ghastMaxHealth = getDouble("mobs.ghast.attributes.max_health", ghastMaxHealth); ghastTakeDamageFromWater = getBoolean("mobs.ghast.takes-damage-from-water", ghastTakeDamageFromWater); @@ -1461,7 +1461,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean giantRidable = false; -@@ -1619,6 +1657,7 @@ public class PurpurWorldConfig { +@@ -1629,6 +1667,7 @@ public class PurpurWorldConfig { public boolean giantHaveAI = false; public boolean giantHaveHostileAI = false; public boolean giantTakeDamageFromWater = false; @@ -1469,7 +1469,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void giantSettings() { giantRidable = getBoolean("mobs.giant.ridable", giantRidable); giantRidableInWater = getBoolean("mobs.giant.ridable-in-water", giantRidableInWater); -@@ -1640,6 +1679,7 @@ public class PurpurWorldConfig { +@@ -1650,6 +1689,7 @@ public class PurpurWorldConfig { giantHaveAI = getBoolean("mobs.giant.have-ai", giantHaveAI); giantHaveHostileAI = getBoolean("mobs.giant.have-hostile-ai", giantHaveHostileAI); giantTakeDamageFromWater = getBoolean("mobs.giant.takes-damage-from-water", giantTakeDamageFromWater); @@ -1477,7 +1477,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean glowSquidRidable = false; -@@ -1647,12 +1687,14 @@ public class PurpurWorldConfig { +@@ -1657,12 +1697,14 @@ public class PurpurWorldConfig { public double glowSquidMaxHealth = 10.0D; public boolean glowSquidsCanFly = false; public boolean glowSquidTakeDamageFromWater = false; @@ -1492,7 +1492,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean goatRidable = false; -@@ -1661,6 +1703,7 @@ public class PurpurWorldConfig { +@@ -1671,6 +1713,7 @@ public class PurpurWorldConfig { public double goatMaxHealth = 10.0D; public int goatBreedingTicks = 6000; public boolean goatTakeDamageFromWater = false; @@ -1500,7 +1500,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void goatSettings() { goatRidable = getBoolean("mobs.goat.ridable", goatRidable); goatRidableInWater = getBoolean("mobs.goat.ridable-in-water", goatRidableInWater); -@@ -1668,12 +1711,14 @@ public class PurpurWorldConfig { +@@ -1678,12 +1721,14 @@ public class PurpurWorldConfig { goatMaxHealth = getDouble("mobs.goat.attributes.max_health", goatMaxHealth); goatBreedingTicks = getInt("mobs.goat.breeding-delay-ticks", goatBreedingTicks); goatTakeDamageFromWater = getBoolean("mobs.goat.takes-damage-from-water", goatTakeDamageFromWater); @@ -1515,7 +1515,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void guardianSettings() { guardianRidable = getBoolean("mobs.guardian.ridable", guardianRidable); guardianControllable = getBoolean("mobs.guardian.controllable", guardianControllable); -@@ -1684,6 +1729,7 @@ public class PurpurWorldConfig { +@@ -1694,6 +1739,7 @@ public class PurpurWorldConfig { } guardianMaxHealth = getDouble("mobs.guardian.attributes.max_health", guardianMaxHealth); guardianTakeDamageFromWater = getBoolean("mobs.guardian.takes-damage-from-water", guardianTakeDamageFromWater); @@ -1523,7 +1523,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean forceHalloweenSeason = false; -@@ -1699,6 +1745,7 @@ public class PurpurWorldConfig { +@@ -1709,6 +1755,7 @@ public class PurpurWorldConfig { public double hoglinMaxHealth = 40.0D; public int hoglinBreedingTicks = 6000; public boolean hoglinTakeDamageFromWater = false; @@ -1531,7 +1531,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -1711,6 +1758,7 @@ public class PurpurWorldConfig { +@@ -1721,6 +1768,7 @@ public class PurpurWorldConfig { hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth); hoglinBreedingTicks = getInt("mobs.hoglin.breeding-delay-ticks", hoglinBreedingTicks); hoglinTakeDamageFromWater = getBoolean("mobs.hoglin.takes-damage-from-water", hoglinTakeDamageFromWater); @@ -1539,7 +1539,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean horseRidableInWater = false; -@@ -1722,6 +1770,7 @@ public class PurpurWorldConfig { +@@ -1732,6 +1780,7 @@ public class PurpurWorldConfig { public double horseMovementSpeedMax = 0.3375D; public int horseBreedingTicks = 6000; public boolean horseTakeDamageFromWater = false; @@ -1547,7 +1547,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -1739,6 +1788,7 @@ public class PurpurWorldConfig { +@@ -1749,6 +1798,7 @@ public class PurpurWorldConfig { horseMovementSpeedMax = getDouble("mobs.horse.attributes.movement_speed.max", horseMovementSpeedMax); horseBreedingTicks = getInt("mobs.horse.breeding-delay-ticks", horseBreedingTicks); horseTakeDamageFromWater = getBoolean("mobs.horse.takes-damage-from-water", horseTakeDamageFromWater); @@ -1555,7 +1555,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean huskRidable = false; -@@ -1750,6 +1800,7 @@ public class PurpurWorldConfig { +@@ -1760,6 +1810,7 @@ public class PurpurWorldConfig { public double huskJockeyChance = 0.05D; public boolean huskJockeyTryExistingChickens = true; public boolean huskTakeDamageFromWater = false; @@ -1563,7 +1563,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -1765,6 +1816,7 @@ public class PurpurWorldConfig { +@@ -1775,6 +1826,7 @@ public class PurpurWorldConfig { huskJockeyChance = getDouble("mobs.husk.jockey.chance", huskJockeyChance); huskJockeyTryExistingChickens = getBoolean("mobs.husk.jockey.try-existing-chickens", huskJockeyTryExistingChickens); huskTakeDamageFromWater = getBoolean("mobs.husk.takes-damage-from-water", huskTakeDamageFromWater); @@ -1571,7 +1571,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean illusionerRidable = false; -@@ -1774,6 +1826,7 @@ public class PurpurWorldConfig { +@@ -1784,6 +1836,7 @@ public class PurpurWorldConfig { public double illusionerFollowRange = 18.0D; public double illusionerMaxHealth = 32.0D; public boolean illusionerTakeDamageFromWater = false; @@ -1579,7 +1579,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void illusionerSettings() { illusionerRidable = getBoolean("mobs.illusioner.ridable", illusionerRidable); illusionerRidableInWater = getBoolean("mobs.illusioner.ridable-in-water", illusionerRidableInWater); -@@ -1791,6 +1844,7 @@ public class PurpurWorldConfig { +@@ -1801,6 +1854,7 @@ public class PurpurWorldConfig { } illusionerMaxHealth = getDouble("mobs.illusioner.attributes.max_health", illusionerMaxHealth); illusionerTakeDamageFromWater = getBoolean("mobs.illusioner.takes-damage-from-water", illusionerTakeDamageFromWater); @@ -1587,7 +1587,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean ironGolemRidable = false; -@@ -1801,6 +1855,7 @@ public class PurpurWorldConfig { +@@ -1811,6 +1865,7 @@ public class PurpurWorldConfig { public boolean ironGolemTakeDamageFromWater = false; public boolean ironGolemPoppyCalm = false; public boolean ironGolemHealCalm = false; @@ -1595,7 +1595,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1815,6 +1870,7 @@ public class PurpurWorldConfig { +@@ -1825,6 +1880,7 @@ public class PurpurWorldConfig { ironGolemTakeDamageFromWater = getBoolean("mobs.iron_golem.takes-damage-from-water", ironGolemTakeDamageFromWater); ironGolemPoppyCalm = getBoolean("mobs.iron_golem.poppy-calms-anger", ironGolemPoppyCalm); ironGolemHealCalm = getBoolean("mobs.iron_golem.healing-calms-anger", ironGolemHealCalm); @@ -1603,7 +1603,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean llamaRidable = false; -@@ -1829,6 +1885,7 @@ public class PurpurWorldConfig { +@@ -1839,6 +1895,7 @@ public class PurpurWorldConfig { public int llamaBreedingTicks = 6000; public boolean llamaTakeDamageFromWater = false; public boolean llamaJoinCaravans = true; @@ -1611,7 +1611,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1849,6 +1906,7 @@ public class PurpurWorldConfig { +@@ -1859,6 +1916,7 @@ public class PurpurWorldConfig { llamaBreedingTicks = getInt("mobs.llama.breeding-delay-ticks", llamaBreedingTicks); llamaTakeDamageFromWater = getBoolean("mobs.llama.takes-damage-from-water", llamaTakeDamageFromWater); llamaJoinCaravans = getBoolean("mobs.llama.join-caravans", llamaJoinCaravans); @@ -1619,7 +1619,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean magmaCubeRidable = false; -@@ -1859,6 +1917,7 @@ public class PurpurWorldConfig { +@@ -1869,6 +1927,7 @@ public class PurpurWorldConfig { public Map magmaCubeMaxHealthCache = new HashMap<>(); public Map magmaCubeAttackDamageCache = new HashMap<>(); public boolean magmaCubeTakeDamageFromWater = false; @@ -1627,7 +1627,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void magmaCubeSettings() { magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable); magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater); -@@ -1873,6 +1932,7 @@ public class PurpurWorldConfig { +@@ -1883,6 +1942,7 @@ public class PurpurWorldConfig { magmaCubeMaxHealthCache.clear(); magmaCubeAttackDamageCache.clear(); magmaCubeTakeDamageFromWater = getBoolean("mobs.magma_cube.takes-damage-from-water", magmaCubeTakeDamageFromWater); @@ -1635,7 +1635,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean mooshroomRidable = false; -@@ -1881,6 +1941,7 @@ public class PurpurWorldConfig { +@@ -1891,6 +1951,7 @@ public class PurpurWorldConfig { public double mooshroomMaxHealth = 10.0D; public int mooshroomBreedingTicks = 6000; public boolean mooshroomTakeDamageFromWater = false; @@ -1643,7 +1643,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1893,6 +1954,7 @@ public class PurpurWorldConfig { +@@ -1903,6 +1964,7 @@ public class PurpurWorldConfig { mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth); mooshroomBreedingTicks = getInt("mobs.mooshroom.breeding-delay-ticks", mooshroomBreedingTicks); mooshroomTakeDamageFromWater = getBoolean("mobs.mooshroom.takes-damage-from-water", mooshroomTakeDamageFromWater); @@ -1651,7 +1651,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean muleRidableInWater = false; -@@ -1904,6 +1966,7 @@ public class PurpurWorldConfig { +@@ -1914,6 +1976,7 @@ public class PurpurWorldConfig { public double muleMovementSpeedMax = 0.175D; public int muleBreedingTicks = 6000; public boolean muleTakeDamageFromWater = false; @@ -1659,7 +1659,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1921,6 +1984,7 @@ public class PurpurWorldConfig { +@@ -1931,6 +1994,7 @@ public class PurpurWorldConfig { muleMovementSpeedMax = getDouble("mobs.mule.attributes.movement_speed.max", muleMovementSpeedMax); muleBreedingTicks = getInt("mobs.mule.breeding-delay-ticks", muleBreedingTicks); muleTakeDamageFromWater = getBoolean("mobs.mule.takes-damage-from-water", muleTakeDamageFromWater); @@ -1667,7 +1667,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean ocelotRidable = false; -@@ -1929,6 +1993,7 @@ public class PurpurWorldConfig { +@@ -1939,6 +2003,7 @@ public class PurpurWorldConfig { public double ocelotMaxHealth = 10.0D; public int ocelotBreedingTicks = 6000; public boolean ocelotTakeDamageFromWater = false; @@ -1675,7 +1675,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1941,6 +2006,7 @@ public class PurpurWorldConfig { +@@ -1951,6 +2016,7 @@ public class PurpurWorldConfig { ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth); ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); ocelotTakeDamageFromWater = getBoolean("mobs.ocelot.takes-damage-from-water", ocelotTakeDamageFromWater); @@ -1683,7 +1683,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean pandaRidable = false; -@@ -1949,6 +2015,7 @@ public class PurpurWorldConfig { +@@ -1959,6 +2025,7 @@ public class PurpurWorldConfig { public double pandaMaxHealth = 20.0D; public int pandaBreedingTicks = 6000; public boolean pandaTakeDamageFromWater = false; @@ -1691,7 +1691,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1961,6 +2028,7 @@ public class PurpurWorldConfig { +@@ -1971,6 +2038,7 @@ public class PurpurWorldConfig { pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth); pandaBreedingTicks = getInt("mobs.panda.breeding-delay-ticks", pandaBreedingTicks); pandaTakeDamageFromWater = getBoolean("mobs.panda.takes-damage-from-water", pandaTakeDamageFromWater); @@ -1699,7 +1699,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean parrotRidable = false; -@@ -1970,6 +2038,7 @@ public class PurpurWorldConfig { +@@ -1980,6 +2048,7 @@ public class PurpurWorldConfig { public double parrotMaxHealth = 6.0D; public boolean parrotTakeDamageFromWater = false; public boolean parrotBreedable = false; @@ -1707,7 +1707,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1983,6 +2052,7 @@ public class PurpurWorldConfig { +@@ -1993,6 +2062,7 @@ public class PurpurWorldConfig { parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth); parrotTakeDamageFromWater = getBoolean("mobs.parrot.takes-damage-from-water", parrotTakeDamageFromWater); parrotBreedable = getBoolean("mobs.parrot.can-breed", parrotBreedable); @@ -1715,7 +1715,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean phantomRidable = false; -@@ -2010,6 +2080,7 @@ public class PurpurWorldConfig { +@@ -2020,6 +2090,7 @@ public class PurpurWorldConfig { public boolean phantomBurnInDaylight = true; public boolean phantomFlamesOnSwoop = false; public boolean phantomTakeDamageFromWater = false; @@ -1723,7 +1723,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -2045,6 +2116,7 @@ public class PurpurWorldConfig { +@@ -2055,6 +2126,7 @@ public class PurpurWorldConfig { phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch); phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop); phantomTakeDamageFromWater = getBoolean("mobs.phantom.takes-damage-from-water", phantomTakeDamageFromWater); @@ -1731,7 +1731,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean pigRidable = false; -@@ -2054,6 +2126,7 @@ public class PurpurWorldConfig { +@@ -2064,6 +2136,7 @@ public class PurpurWorldConfig { public boolean pigGiveSaddleBack = false; public int pigBreedingTicks = 6000; public boolean pigTakeDamageFromWater = false; @@ -1739,7 +1739,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -2067,6 +2140,7 @@ public class PurpurWorldConfig { +@@ -2077,6 +2150,7 @@ public class PurpurWorldConfig { pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); pigBreedingTicks = getInt("mobs.pig.breeding-delay-ticks", pigBreedingTicks); pigTakeDamageFromWater = getBoolean("mobs.pig.takes-damage-from-water", pigTakeDamageFromWater); @@ -1747,7 +1747,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean piglinRidable = false; -@@ -2076,6 +2150,7 @@ public class PurpurWorldConfig { +@@ -2086,6 +2160,7 @@ public class PurpurWorldConfig { public boolean piglinBypassMobGriefing = false; public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; @@ -1755,7 +1755,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2089,6 +2164,7 @@ public class PurpurWorldConfig { +@@ -2099,6 +2174,7 @@ public class PurpurWorldConfig { piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater); piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier); @@ -1763,7 +1763,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean piglinBruteRidable = false; -@@ -2096,6 +2172,7 @@ public class PurpurWorldConfig { +@@ -2106,6 +2182,7 @@ public class PurpurWorldConfig { public boolean piglinBruteControllable = true; public double piglinBruteMaxHealth = 50.0D; public boolean piglinBruteTakeDamageFromWater = false; @@ -1771,7 +1771,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void piglinBruteSettings() { piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable); piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater); -@@ -2107,6 +2184,7 @@ public class PurpurWorldConfig { +@@ -2117,6 +2194,7 @@ public class PurpurWorldConfig { } piglinBruteMaxHealth = getDouble("mobs.piglin_brute.attributes.max_health", piglinBruteMaxHealth); piglinBruteTakeDamageFromWater = getBoolean("mobs.piglin_brute.takes-damage-from-water", piglinBruteTakeDamageFromWater); @@ -1779,7 +1779,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean pillagerRidable = false; -@@ -2115,6 +2193,7 @@ public class PurpurWorldConfig { +@@ -2125,6 +2203,7 @@ public class PurpurWorldConfig { public double pillagerMaxHealth = 24.0D; public boolean pillagerBypassMobGriefing = false; public boolean pillagerTakeDamageFromWater = false; @@ -1787,7 +1787,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -2127,6 +2206,7 @@ public class PurpurWorldConfig { +@@ -2137,6 +2216,7 @@ public class PurpurWorldConfig { pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); pillagerBypassMobGriefing = getBoolean("mobs.pillager.bypass-mob-griefing", pillagerBypassMobGriefing); pillagerTakeDamageFromWater = getBoolean("mobs.pillager.takes-damage-from-water", pillagerTakeDamageFromWater); @@ -1795,7 +1795,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean polarBearRidable = false; -@@ -2137,6 +2217,7 @@ public class PurpurWorldConfig { +@@ -2147,6 +2227,7 @@ public class PurpurWorldConfig { public Item polarBearBreedableItem = null; public int polarBearBreedingTicks = 6000; public boolean polarBearTakeDamageFromWater = false; @@ -1803,7 +1803,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -2152,12 +2233,14 @@ public class PurpurWorldConfig { +@@ -2162,12 +2243,14 @@ public class PurpurWorldConfig { if (item != Items.AIR) polarBearBreedableItem = item; polarBearBreedingTicks = getInt("mobs.polar_bear.breeding-delay-ticks", polarBearBreedingTicks); polarBearTakeDamageFromWater = getBoolean("mobs.polar_bear.takes-damage-from-water", polarBearTakeDamageFromWater); @@ -1818,7 +1818,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void pufferfishSettings() { pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable); pufferfishControllable = getBoolean("mobs.pufferfish.controllable", pufferfishControllable); -@@ -2168,6 +2251,7 @@ public class PurpurWorldConfig { +@@ -2178,6 +2261,7 @@ public class PurpurWorldConfig { } pufferfishMaxHealth = getDouble("mobs.pufferfish.attributes.max_health", pufferfishMaxHealth); pufferfishTakeDamageFromWater = getBoolean("mobs.pufferfish.takes-damage-from-water", pufferfishTakeDamageFromWater); @@ -1826,7 +1826,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean rabbitRidable = false; -@@ -2179,6 +2263,7 @@ public class PurpurWorldConfig { +@@ -2189,6 +2273,7 @@ public class PurpurWorldConfig { public int rabbitBreedingTicks = 6000; public boolean rabbitBypassMobGriefing = false; public boolean rabbitTakeDamageFromWater = false; @@ -1834,7 +1834,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -2194,6 +2279,7 @@ public class PurpurWorldConfig { +@@ -2204,6 +2289,7 @@ public class PurpurWorldConfig { rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks); rabbitBypassMobGriefing = getBoolean("mobs.rabbit.bypass-mob-griefing", rabbitBypassMobGriefing); rabbitTakeDamageFromWater = getBoolean("mobs.rabbit.takes-damage-from-water", rabbitTakeDamageFromWater); @@ -1842,7 +1842,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean ravagerRidable = false; -@@ -2203,6 +2289,7 @@ public class PurpurWorldConfig { +@@ -2213,6 +2299,7 @@ public class PurpurWorldConfig { public boolean ravagerBypassMobGriefing = false; public boolean ravagerTakeDamageFromWater = false; public List ravagerGriefableBlocks = new ArrayList<>(); @@ -1850,7 +1850,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -2232,12 +2319,14 @@ public class PurpurWorldConfig { +@@ -2242,12 +2329,14 @@ public class PurpurWorldConfig { ravagerGriefableBlocks.add(block); } }); @@ -1865,7 +1865,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void salmonSettings() { salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable); salmonControllable = getBoolean("mobs.salmon.controllable", salmonControllable); -@@ -2248,6 +2337,7 @@ public class PurpurWorldConfig { +@@ -2258,6 +2347,7 @@ public class PurpurWorldConfig { } salmonMaxHealth = getDouble("mobs.salmon.attributes.max_health", salmonMaxHealth); salmonTakeDamageFromWater = getBoolean("mobs.salmon.takes-damage-from-water", salmonTakeDamageFromWater); @@ -1873,7 +1873,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean sheepRidable = false; -@@ -2257,6 +2347,7 @@ public class PurpurWorldConfig { +@@ -2267,6 +2357,7 @@ public class PurpurWorldConfig { public int sheepBreedingTicks = 6000; public boolean sheepBypassMobGriefing = false; public boolean sheepTakeDamageFromWater = false; @@ -1881,7 +1881,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -2270,6 +2361,7 @@ public class PurpurWorldConfig { +@@ -2280,6 +2371,7 @@ public class PurpurWorldConfig { sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing); sheepTakeDamageFromWater = getBoolean("mobs.sheep.takes-damage-from-water", sheepTakeDamageFromWater); @@ -1889,7 +1889,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean shulkerRidable = false; -@@ -2283,6 +2375,7 @@ public class PurpurWorldConfig { +@@ -2293,6 +2385,7 @@ public class PurpurWorldConfig { public String shulkerSpawnFromBulletNearbyEquation = "(nearby - 1) / 5.0"; public boolean shulkerSpawnFromBulletRandomColor = false; public boolean shulkerChangeColorWithDye = false; @@ -1897,7 +1897,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2300,6 +2393,7 @@ public class PurpurWorldConfig { +@@ -2310,6 +2403,7 @@ public class PurpurWorldConfig { shulkerSpawnFromBulletNearbyEquation = getString("mobs.shulker.spawn-from-bullet.nearby-equation", shulkerSpawnFromBulletNearbyEquation); shulkerSpawnFromBulletRandomColor = getBoolean("mobs.shulker.spawn-from-bullet.random-color", shulkerSpawnFromBulletRandomColor); shulkerChangeColorWithDye = getBoolean("mobs.shulker.change-color-with-dye", shulkerChangeColorWithDye); @@ -1905,7 +1905,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean silverfishRidable = false; -@@ -2308,6 +2402,7 @@ public class PurpurWorldConfig { +@@ -2318,6 +2412,7 @@ public class PurpurWorldConfig { public double silverfishMaxHealth = 8.0D; public boolean silverfishBypassMobGriefing = false; public boolean silverfishTakeDamageFromWater = false; @@ -1913,7 +1913,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -2320,6 +2415,7 @@ public class PurpurWorldConfig { +@@ -2330,6 +2425,7 @@ public class PurpurWorldConfig { silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max_health", silverfishMaxHealth); silverfishBypassMobGriefing = getBoolean("mobs.silverfish.bypass-mob-griefing", silverfishBypassMobGriefing); silverfishTakeDamageFromWater = getBoolean("mobs.silverfish.takes-damage-from-water", silverfishTakeDamageFromWater); @@ -1921,7 +1921,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean skeletonRidable = false; -@@ -2327,6 +2423,7 @@ public class PurpurWorldConfig { +@@ -2337,6 +2433,7 @@ public class PurpurWorldConfig { public boolean skeletonControllable = true; public double skeletonMaxHealth = 20.0D; public boolean skeletonTakeDamageFromWater = false; @@ -1929,7 +1929,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2338,6 +2435,7 @@ public class PurpurWorldConfig { +@@ -2348,6 +2445,7 @@ public class PurpurWorldConfig { } skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); @@ -1937,7 +1937,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean skeletonHorseRidable = false; -@@ -2350,6 +2448,7 @@ public class PurpurWorldConfig { +@@ -2360,6 +2458,7 @@ public class PurpurWorldConfig { public double skeletonHorseMovementSpeedMin = 0.2D; public double skeletonHorseMovementSpeedMax = 0.2D; public boolean skeletonHorseTakeDamageFromWater = false; @@ -1945,7 +1945,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void skeletonHorseSettings() { skeletonHorseRidable = getBoolean("mobs.skeleton_horse.ridable", skeletonHorseRidable); skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); -@@ -2367,6 +2466,7 @@ public class PurpurWorldConfig { +@@ -2377,6 +2476,7 @@ public class PurpurWorldConfig { skeletonHorseMovementSpeedMin = getDouble("mobs.skeleton_horse.attributes.movement_speed.min", skeletonHorseMovementSpeedMin); skeletonHorseMovementSpeedMax = getDouble("mobs.skeleton_horse.attributes.movement_speed.max", skeletonHorseMovementSpeedMax); skeletonHorseTakeDamageFromWater = getBoolean("mobs.skeleton_horse.takes-damage-from-water", skeletonHorseTakeDamageFromWater); @@ -1953,7 +1953,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean slimeRidable = false; -@@ -2377,6 +2477,7 @@ public class PurpurWorldConfig { +@@ -2387,6 +2487,7 @@ public class PurpurWorldConfig { public Map slimeMaxHealthCache = new HashMap<>(); public Map slimeAttackDamageCache = new HashMap<>(); public boolean slimeTakeDamageFromWater = false; @@ -1961,7 +1961,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -2391,6 +2492,7 @@ public class PurpurWorldConfig { +@@ -2401,6 +2502,7 @@ public class PurpurWorldConfig { slimeMaxHealthCache.clear(); slimeAttackDamageCache.clear(); slimeTakeDamageFromWater = getBoolean("mobs.slime.takes-damage-from-water", slimeTakeDamageFromWater); @@ -1969,7 +1969,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean snowGolemRidable = false; -@@ -2405,6 +2507,7 @@ public class PurpurWorldConfig { +@@ -2415,6 +2517,7 @@ public class PurpurWorldConfig { public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; public boolean snowGolemTakeDamageFromWater = true; @@ -1977,7 +1977,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -2423,6 +2526,7 @@ public class PurpurWorldConfig { +@@ -2433,6 +2536,7 @@ public class PurpurWorldConfig { snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance); snowGolemBypassMobGriefing = getBoolean("mobs.snow_golem.bypass-mob-griefing", snowGolemBypassMobGriefing); snowGolemTakeDamageFromWater = getBoolean("mobs.snow_golem.takes-damage-from-water", snowGolemTakeDamageFromWater); @@ -1985,7 +1985,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean snifferRidable = false; -@@ -2445,6 +2549,7 @@ public class PurpurWorldConfig { +@@ -2455,6 +2559,7 @@ public class PurpurWorldConfig { public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; public boolean squidTakeDamageFromWater = false; @@ -1993,7 +1993,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -2458,6 +2563,7 @@ public class PurpurWorldConfig { +@@ -2468,6 +2573,7 @@ public class PurpurWorldConfig { squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); squidsCanFly = getBoolean("mobs.squid.can-fly", squidsCanFly); squidTakeDamageFromWater = getBoolean("mobs.squid.takes-damage-from-water", squidTakeDamageFromWater); @@ -2001,7 +2001,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean spiderRidable = false; -@@ -2465,6 +2571,7 @@ public class PurpurWorldConfig { +@@ -2475,6 +2581,7 @@ public class PurpurWorldConfig { public boolean spiderControllable = true; public double spiderMaxHealth = 16.0D; public boolean spiderTakeDamageFromWater = false; @@ -2009,7 +2009,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -2476,6 +2583,7 @@ public class PurpurWorldConfig { +@@ -2486,6 +2593,7 @@ public class PurpurWorldConfig { } spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth); spiderTakeDamageFromWater = getBoolean("mobs.spider.takes-damage-from-water", spiderTakeDamageFromWater); @@ -2017,7 +2017,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean strayRidable = false; -@@ -2483,6 +2591,7 @@ public class PurpurWorldConfig { +@@ -2493,6 +2601,7 @@ public class PurpurWorldConfig { public boolean strayControllable = true; public double strayMaxHealth = 20.0D; public boolean strayTakeDamageFromWater = false; @@ -2025,7 +2025,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -2494,6 +2603,7 @@ public class PurpurWorldConfig { +@@ -2504,6 +2613,7 @@ public class PurpurWorldConfig { } strayMaxHealth = getDouble("mobs.stray.attributes.max_health", strayMaxHealth); strayTakeDamageFromWater = getBoolean("mobs.stray.takes-damage-from-water", strayTakeDamageFromWater); @@ -2033,7 +2033,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean striderRidable = false; -@@ -2503,6 +2613,7 @@ public class PurpurWorldConfig { +@@ -2513,6 +2623,7 @@ public class PurpurWorldConfig { public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; public boolean striderTakeDamageFromWater = true; @@ -2041,7 +2041,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -2516,6 +2627,7 @@ public class PurpurWorldConfig { +@@ -2526,6 +2637,7 @@ public class PurpurWorldConfig { striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); striderGiveSaddleBack = getBoolean("mobs.strider.give-saddle-back", striderGiveSaddleBack); striderTakeDamageFromWater = getBoolean("mobs.strider.takes-damage-from-water", striderTakeDamageFromWater); @@ -2049,7 +2049,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean tadpoleRidable = false; -@@ -2538,6 +2650,7 @@ public class PurpurWorldConfig { +@@ -2548,6 +2660,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMax = 0.175D; public int traderLlamaBreedingTicks = 6000; public boolean traderLlamaTakeDamageFromWater = false; @@ -2057,7 +2057,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -2557,12 +2670,14 @@ public class PurpurWorldConfig { +@@ -2567,12 +2680,14 @@ public class PurpurWorldConfig { traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax); traderLlamaBreedingTicks = getInt("mobs.trader_llama.breeding-delay-ticks", traderLlamaBreedingTicks); traderLlamaTakeDamageFromWater = getBoolean("mobs.trader_llama.takes-damage-from-water", traderLlamaTakeDamageFromWater); @@ -2072,7 +2072,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); tropicalFishControllable = getBoolean("mobs.tropical_fish.controllable", tropicalFishControllable); -@@ -2573,6 +2688,7 @@ public class PurpurWorldConfig { +@@ -2583,6 +2698,7 @@ public class PurpurWorldConfig { } tropicalFishMaxHealth = getDouble("mobs.tropical_fish.attributes.max_health", tropicalFishMaxHealth); tropicalFishTakeDamageFromWater = getBoolean("mobs.tropical_fish.takes-damage-from-water", tropicalFishTakeDamageFromWater); @@ -2080,7 +2080,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean turtleRidable = false; -@@ -2581,6 +2697,7 @@ public class PurpurWorldConfig { +@@ -2591,6 +2707,7 @@ public class PurpurWorldConfig { public double turtleMaxHealth = 30.0D; public int turtleBreedingTicks = 6000; public boolean turtleTakeDamageFromWater = false; @@ -2088,7 +2088,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -2593,6 +2710,7 @@ public class PurpurWorldConfig { +@@ -2603,6 +2720,7 @@ public class PurpurWorldConfig { turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); turtleBreedingTicks = getInt("mobs.turtle.breeding-delay-ticks", turtleBreedingTicks); turtleTakeDamageFromWater = getBoolean("mobs.turtle.takes-damage-from-water", turtleTakeDamageFromWater); @@ -2096,7 +2096,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean vexRidable = false; -@@ -2601,6 +2719,7 @@ public class PurpurWorldConfig { +@@ -2611,6 +2729,7 @@ public class PurpurWorldConfig { public double vexMaxY = 320D; public double vexMaxHealth = 14.0D; public boolean vexTakeDamageFromWater = false; @@ -2104,7 +2104,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -2613,6 +2732,7 @@ public class PurpurWorldConfig { +@@ -2623,6 +2742,7 @@ public class PurpurWorldConfig { } vexMaxHealth = getDouble("mobs.vex.attributes.max_health", vexMaxHealth); vexTakeDamageFromWater = getBoolean("mobs.vex.takes-damage-from-water", vexTakeDamageFromWater); @@ -2112,7 +2112,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean villagerRidable = false; -@@ -2628,6 +2748,7 @@ public class PurpurWorldConfig { +@@ -2638,6 +2758,7 @@ public class PurpurWorldConfig { public boolean villagerBypassMobGriefing = false; public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; @@ -2120,7 +2120,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2647,6 +2768,7 @@ public class PurpurWorldConfig { +@@ -2657,6 +2778,7 @@ public class PurpurWorldConfig { villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); @@ -2128,7 +2128,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean vindicatorRidable = false; -@@ -2655,6 +2777,7 @@ public class PurpurWorldConfig { +@@ -2665,6 +2787,7 @@ public class PurpurWorldConfig { public double vindicatorMaxHealth = 24.0D; public double vindicatorJohnnySpawnChance = 0D; public boolean vindicatorTakeDamageFromWater = false; @@ -2136,7 +2136,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -2667,6 +2790,7 @@ public class PurpurWorldConfig { +@@ -2677,6 +2800,7 @@ public class PurpurWorldConfig { vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); vindicatorJohnnySpawnChance = getDouble("mobs.vindicator.johnny.spawn-chance", vindicatorJohnnySpawnChance); vindicatorTakeDamageFromWater = getBoolean("mobs.vindicator.takes-damage-from-water", vindicatorTakeDamageFromWater); @@ -2144,7 +2144,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean wanderingTraderRidable = false; -@@ -2677,6 +2801,7 @@ public class PurpurWorldConfig { +@@ -2687,6 +2811,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderTakeDamageFromWater = false; public boolean wanderingTraderAllowTrading = true; @@ -2152,7 +2152,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2691,6 +2816,7 @@ public class PurpurWorldConfig { +@@ -2701,6 +2826,7 @@ public class PurpurWorldConfig { wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); wanderingTraderTakeDamageFromWater = getBoolean("mobs.wandering_trader.takes-damage-from-water", wanderingTraderTakeDamageFromWater); wanderingTraderAllowTrading = getBoolean("mobs.wandering_trader.allow-trading", wanderingTraderAllowTrading); @@ -2160,7 +2160,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean wardenRidable = false; -@@ -2707,6 +2833,7 @@ public class PurpurWorldConfig { +@@ -2717,6 +2843,7 @@ public class PurpurWorldConfig { public boolean witchControllable = true; public double witchMaxHealth = 26.0D; public boolean witchTakeDamageFromWater = false; @@ -2168,7 +2168,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -2718,6 +2845,7 @@ public class PurpurWorldConfig { +@@ -2728,6 +2855,7 @@ public class PurpurWorldConfig { } witchMaxHealth = getDouble("mobs.witch.attributes.max_health", witchMaxHealth); witchTakeDamageFromWater = getBoolean("mobs.witch.takes-damage-from-water", witchTakeDamageFromWater); @@ -2176,7 +2176,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean witherRidable = false; -@@ -2732,6 +2860,7 @@ public class PurpurWorldConfig { +@@ -2742,6 +2870,7 @@ public class PurpurWorldConfig { public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; public boolean witherPlaySpawnSound = true; @@ -2184,7 +2184,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2754,6 +2883,7 @@ public class PurpurWorldConfig { +@@ -2764,6 +2893,7 @@ public class PurpurWorldConfig { witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles); witherExplosionRadius = (float) getDouble("mobs.wither.explosion-radius", witherExplosionRadius); witherPlaySpawnSound = getBoolean("mobs.wither.play-spawn-sound", witherPlaySpawnSound); @@ -2192,7 +2192,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean witherSkeletonRidable = false; -@@ -2761,6 +2891,7 @@ public class PurpurWorldConfig { +@@ -2771,6 +2901,7 @@ public class PurpurWorldConfig { public boolean witherSkeletonControllable = true; public double witherSkeletonMaxHealth = 20.0D; public boolean witherSkeletonTakeDamageFromWater = false; @@ -2200,7 +2200,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -2772,6 +2903,7 @@ public class PurpurWorldConfig { +@@ -2782,6 +2913,7 @@ public class PurpurWorldConfig { } witherSkeletonMaxHealth = getDouble("mobs.wither_skeleton.attributes.max_health", witherSkeletonMaxHealth); witherSkeletonTakeDamageFromWater = getBoolean("mobs.wither_skeleton.takes-damage-from-water", witherSkeletonTakeDamageFromWater); @@ -2208,7 +2208,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean wolfRidable = false; -@@ -2783,6 +2915,7 @@ public class PurpurWorldConfig { +@@ -2793,6 +2925,7 @@ public class PurpurWorldConfig { public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; public boolean wolfTakeDamageFromWater = false; @@ -2216,7 +2216,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -2802,6 +2935,7 @@ public class PurpurWorldConfig { +@@ -2812,6 +2945,7 @@ public class PurpurWorldConfig { wolfNaturalRabid = getDouble("mobs.wolf.spawn-rabid-chance", wolfNaturalRabid); wolfBreedingTicks = getInt("mobs.wolf.breeding-delay-ticks", wolfBreedingTicks); wolfTakeDamageFromWater = getBoolean("mobs.wolf.takes-damage-from-water", wolfTakeDamageFromWater); @@ -2224,7 +2224,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean zoglinRidable = false; -@@ -2809,6 +2943,7 @@ public class PurpurWorldConfig { +@@ -2819,6 +2953,7 @@ public class PurpurWorldConfig { public boolean zoglinControllable = true; public double zoglinMaxHealth = 40.0D; public boolean zoglinTakeDamageFromWater = false; @@ -2232,7 +2232,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -2820,6 +2955,7 @@ public class PurpurWorldConfig { +@@ -2830,6 +2965,7 @@ public class PurpurWorldConfig { } zoglinMaxHealth = getDouble("mobs.zoglin.attributes.max_health", zoglinMaxHealth); zoglinTakeDamageFromWater = getBoolean("mobs.zoglin.takes-damage-from-water", zoglinTakeDamageFromWater); @@ -2240,7 +2240,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean zombieRidable = false; -@@ -2833,6 +2969,7 @@ public class PurpurWorldConfig { +@@ -2843,6 +2979,7 @@ public class PurpurWorldConfig { public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; @@ -2248,7 +2248,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2850,6 +2987,7 @@ public class PurpurWorldConfig { +@@ -2860,6 +2997,7 @@ public class PurpurWorldConfig { zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging); zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); zombieTakeDamageFromWater = getBoolean("mobs.zombie.takes-damage-from-water", zombieTakeDamageFromWater); @@ -2256,7 +2256,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean zombieHorseRidable = false; -@@ -2863,6 +3001,7 @@ public class PurpurWorldConfig { +@@ -2873,6 +3011,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; public boolean zombieHorseTakeDamageFromWater = false; @@ -2264,7 +2264,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void zombieHorseSettings() { zombieHorseRidable = getBoolean("mobs.zombie_horse.ridable", zombieHorseRidable); zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); -@@ -2881,6 +3020,7 @@ public class PurpurWorldConfig { +@@ -2891,6 +3030,7 @@ public class PurpurWorldConfig { zombieHorseMovementSpeedMax = getDouble("mobs.zombie_horse.attributes.movement_speed.max", zombieHorseMovementSpeedMax); zombieHorseSpawnChance = getDouble("mobs.zombie_horse.spawn-chance", zombieHorseSpawnChance); zombieHorseTakeDamageFromWater = getBoolean("mobs.zombie_horse.takes-damage-from-water", zombieHorseTakeDamageFromWater); @@ -2272,7 +2272,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean zombieVillagerRidable = false; -@@ -2895,6 +3035,7 @@ public class PurpurWorldConfig { +@@ -2905,6 +3045,7 @@ public class PurpurWorldConfig { public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; public boolean zombieVillagerCureEnabled = true; @@ -2280,7 +2280,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2913,6 +3054,7 @@ public class PurpurWorldConfig { +@@ -2923,6 +3064,7 @@ public class PurpurWorldConfig { zombieVillagerCuringTimeMin = getInt("mobs.zombie_villager.curing_time.min", zombieVillagerCuringTimeMin); zombieVillagerCuringTimeMax = getInt("mobs.zombie_villager.curing_time.max", zombieVillagerCuringTimeMax); zombieVillagerCureEnabled = getBoolean("mobs.zombie_villager.cure.enabled", zombieVillagerCureEnabled); @@ -2288,7 +2288,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 } public boolean zombifiedPiglinRidable = false; -@@ -2925,6 +3067,7 @@ public class PurpurWorldConfig { +@@ -2935,6 +3077,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; public boolean zombifiedPiglinTakeDamageFromWater = false; @@ -2296,7 +2296,7 @@ index 8d4c3c4a06d40841e8446485364393e36e686fdd..b493eb542c3284ce1e748ca8f61312c6 private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2941,6 +3084,7 @@ public class PurpurWorldConfig { +@@ -2951,6 +3094,7 @@ public class PurpurWorldConfig { zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens); zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); zombifiedPiglinTakeDamageFromWater = getBoolean("mobs.zombified_piglin.takes-damage-from-water", zombifiedPiglinTakeDamageFromWater); diff --git a/patches/server/0217-Grindstone-API.patch b/patches/server/0218-Grindstone-API.patch similarity index 95% rename from patches/server/0217-Grindstone-API.patch rename to patches/server/0218-Grindstone-API.patch index 84897e687..479f112fa 100644 --- a/patches/server/0217-Grindstone-API.patch +++ b/patches/server/0218-Grindstone-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Grindstone API diff --git a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java -index e9451ab9635b3040490a3cbbf0a2bdeb63fd3338..4ab03c778bff9c23eafb36e97fadc0ee416e89f0 100644 +index 5824636332eb35ae6bee9cc0661ee95901bb8c4b..1d181de9c8fd45b4d9f0230f80d5752ff5c1a432 100644 --- a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java +++ b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java @@ -95,9 +95,11 @@ public class GrindstoneMenu extends AbstractContainerMenu { diff --git a/patches/server/0218-Ability-for-hoe-to-replant-crops-and-nether-warts.patch b/patches/server/0219-Ability-for-hoe-to-replant-crops-and-nether-warts.patch similarity index 96% rename from patches/server/0218-Ability-for-hoe-to-replant-crops-and-nether-warts.patch rename to patches/server/0219-Ability-for-hoe-to-replant-crops-and-nether-warts.patch index 14c0beabc..ade478c77 100644 --- a/patches/server/0218-Ability-for-hoe-to-replant-crops-and-nether-warts.patch +++ b/patches/server/0219-Ability-for-hoe-to-replant-crops-and-nether-warts.patch @@ -74,10 +74,10 @@ index acbd60a2f162fe0e254e36d0e8e7face3fc8a7b3..da1c7999ca64199387054de46489d3ff + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b493eb542c3284ce1e748ca8f61312c6e0913991..b82024428de95ba18a21b4294ecc0fc52ad89fee 100644 +index 6e4990ef903e7a492da953662a2a2a99b051baca..d766e9da3cc01c82681c7d96426b705c9449724d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -538,6 +538,8 @@ public class PurpurWorldConfig { +@@ -548,6 +548,8 @@ public class PurpurWorldConfig { public Map axeWeatherables = new HashMap<>(); public Map hoeTillables = new HashMap<>(); public Map shovelFlattenables = new HashMap<>(); @@ -86,7 +86,7 @@ index b493eb542c3284ce1e748ca8f61312c6e0913991..b82024428de95ba18a21b4294ecc0fc5 private void toolSettings() { axeStrippables.clear(); axeWaxables.clear(); -@@ -805,6 +807,8 @@ public class PurpurWorldConfig { +@@ -815,6 +817,8 @@ public class PurpurWorldConfig { }); shovelFlattenables.put(block, new Flattenable(into, drops)); }); diff --git a/patches/server/0219-Turtle-eggs-random-tick-crack-chance.patch b/patches/server/0220-Turtle-eggs-random-tick-crack-chance.patch similarity index 93% rename from patches/server/0219-Turtle-eggs-random-tick-crack-chance.patch rename to patches/server/0220-Turtle-eggs-random-tick-crack-chance.patch index 4d99f9fb9..04a62a12f 100644 --- a/patches/server/0219-Turtle-eggs-random-tick-crack-chance.patch +++ b/patches/server/0220-Turtle-eggs-random-tick-crack-chance.patch @@ -18,10 +18,10 @@ index 0c732cfbd9ce50198a3f85ae8ef2263d7ae0bc1a..2f0e8aeb9c45853fca12ddd78a7d5181 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b82024428de95ba18a21b4294ecc0fc52ad89fee..f0718c62cc9c2efaaf70b006c712d1cdbb54ccfc 100644 +index d766e9da3cc01c82681c7d96426b705c9449724d..e4c1fe03e5ca7fa91ca7fc26eb0ba12e18d009a4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1060,11 +1060,13 @@ public class PurpurWorldConfig { +@@ -1070,11 +1070,13 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromItems = false; public boolean turtleEggsBreakFromMinecarts = false; public boolean turtleEggsBypassMobGriefing = false; diff --git a/patches/server/0220-Mob-head-visibility-percent.patch b/patches/server/0221-Mob-head-visibility-percent.patch similarity index 90% rename from patches/server/0220-Mob-head-visibility-percent.patch rename to patches/server/0221-Mob-head-visibility-percent.patch index 4dd20025d..91020ffb9 100644 --- a/patches/server/0220-Mob-head-visibility-percent.patch +++ b/patches/server/0221-Mob-head-visibility-percent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Mob head visibility percent diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 28718b44dc2bd98a5144ebcfd8be195a4715ccd7..24f002e44a7a485026a814c898b8569998805da8 100644 +index 549579f2bc2e1fd23ece1ead543e3e5242f52ce0..119d2e57995fa20f34b88963b93c945ff87e0cab 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1071,9 +1071,20 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -32,10 +32,10 @@ index 28718b44dc2bd98a5144ebcfd8be195a4715ccd7..24f002e44a7a485026a814c898b85699 // Purpur start if (entity instanceof LivingEntity entityliving) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f0718c62cc9c2efaaf70b006c712d1cdbb54ccfc..0c3fec906da62b627f2570f78f2d3d46e07b93f1 100644 +index e4c1fe03e5ca7fa91ca7fc26eb0ba12e18d009a4..efcf075ec700e0d9f85a2e8b86580bc693dedf71 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1354,6 +1354,7 @@ public class PurpurWorldConfig { +@@ -1364,6 +1364,7 @@ public class PurpurWorldConfig { public boolean creeperExplodeWhenKilled = false; public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; @@ -43,7 +43,7 @@ index f0718c62cc9c2efaaf70b006c712d1cdbb54ccfc..0c3fec906da62b627f2570f78f2d3d46 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1371,6 +1372,7 @@ public class PurpurWorldConfig { +@@ -1381,6 +1382,7 @@ public class PurpurWorldConfig { creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled); creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius); creeperAlwaysDropExp = getBoolean("mobs.creeper.always-drop-exp", creeperAlwaysDropExp); @@ -51,7 +51,7 @@ index f0718c62cc9c2efaaf70b006c712d1cdbb54ccfc..0c3fec906da62b627f2570f78f2d3d46 } public boolean dolphinRidable = false; -@@ -2157,6 +2159,7 @@ public class PurpurWorldConfig { +@@ -2167,6 +2169,7 @@ public class PurpurWorldConfig { public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; public boolean piglinAlwaysDropExp = false; @@ -59,7 +59,7 @@ index f0718c62cc9c2efaaf70b006c712d1cdbb54ccfc..0c3fec906da62b627f2570f78f2d3d46 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2171,6 +2174,7 @@ public class PurpurWorldConfig { +@@ -2181,6 +2184,7 @@ public class PurpurWorldConfig { piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater); piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier); piglinAlwaysDropExp = getBoolean("mobs.piglin.always-drop-exp", piglinAlwaysDropExp); @@ -67,7 +67,7 @@ index f0718c62cc9c2efaaf70b006c712d1cdbb54ccfc..0c3fec906da62b627f2570f78f2d3d46 } public boolean piglinBruteRidable = false; -@@ -2430,6 +2434,7 @@ public class PurpurWorldConfig { +@@ -2440,6 +2444,7 @@ public class PurpurWorldConfig { public double skeletonMaxHealth = 20.0D; public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; @@ -75,7 +75,7 @@ index f0718c62cc9c2efaaf70b006c712d1cdbb54ccfc..0c3fec906da62b627f2570f78f2d3d46 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2442,6 +2447,7 @@ public class PurpurWorldConfig { +@@ -2452,6 +2457,7 @@ public class PurpurWorldConfig { skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); @@ -83,7 +83,7 @@ index f0718c62cc9c2efaaf70b006c712d1cdbb54ccfc..0c3fec906da62b627f2570f78f2d3d46 } public boolean skeletonHorseRidable = false; -@@ -2976,6 +2982,7 @@ public class PurpurWorldConfig { +@@ -2986,6 +2992,7 @@ public class PurpurWorldConfig { public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; public boolean zombieAlwaysDropExp = false; @@ -91,7 +91,7 @@ index f0718c62cc9c2efaaf70b006c712d1cdbb54ccfc..0c3fec906da62b627f2570f78f2d3d46 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2994,6 +3001,7 @@ public class PurpurWorldConfig { +@@ -3004,6 +3011,7 @@ public class PurpurWorldConfig { zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); zombieTakeDamageFromWater = getBoolean("mobs.zombie.takes-damage-from-water", zombieTakeDamageFromWater); zombieAlwaysDropExp = getBoolean("mobs.zombie.always-drop-exp", zombieAlwaysDropExp); diff --git a/patches/server/0221-Configurable-valid-characters-for-usernames.patch b/patches/server/0222-Configurable-valid-characters-for-usernames.patch similarity index 94% rename from patches/server/0221-Configurable-valid-characters-for-usernames.patch rename to patches/server/0222-Configurable-valid-characters-for-usernames.patch index a201a978b..ca0221545 100644 --- a/patches/server/0221-Configurable-valid-characters-for-usernames.patch +++ b/patches/server/0222-Configurable-valid-characters-for-usernames.patch @@ -17,7 +17,7 @@ index 0bd191acb9596d3aa21c337230d26f09d26f6888..20211f40aeeade9217ece087688974bd return false; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index a1fa16fca204098fd2211a4c206299356fc97724..107852247029b748a3e6e17b0ddbecdb50ce6d29 100644 +index 9ded52a0022e33a6b69191b5fa758d6cc7eb076f..cd27c2a3343133d688592791bec2a031410ff93f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -452,4 +452,11 @@ public class PurpurConfig { diff --git a/patches/server/0222-Shears-can-have-looting-enchantment.patch b/patches/server/0223-Shears-can-have-looting-enchantment.patch similarity index 99% rename from patches/server/0222-Shears-can-have-looting-enchantment.patch rename to patches/server/0223-Shears-can-have-looting-enchantment.patch index bd8ac1e24..0f524214d 100644 --- a/patches/server/0222-Shears-can-have-looting-enchantment.patch +++ b/patches/server/0223-Shears-can-have-looting-enchantment.patch @@ -139,7 +139,7 @@ index 754eb747179d9318bc5a3883e5622cc400c4e06c..4e929539cb093d58f3311d5f6a62bd1a this.generateShearedMushrooms(drops::add); return drops; diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 107852247029b748a3e6e17b0ddbecdb50ce6d29..19e54e22ca2e024074c28dda3bbdf75ce9f1b083 100644 +index cd27c2a3343133d688592791bec2a031410ff93f..91d5c175752f6ee850adada6802c8af8f833d9c7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -391,6 +391,7 @@ public class PurpurConfig { diff --git a/patches/server/0223-Stop-bees-from-dying-after-stinging.patch b/patches/server/0224-Stop-bees-from-dying-after-stinging.patch similarity index 90% rename from patches/server/0223-Stop-bees-from-dying-after-stinging.patch rename to patches/server/0224-Stop-bees-from-dying-after-stinging.patch index d65e11b3b..141ed0451 100644 --- a/patches/server/0223-Stop-bees-from-dying-after-stinging.patch +++ b/patches/server/0224-Stop-bees-from-dying-after-stinging.patch @@ -17,10 +17,10 @@ index 926c30db9b28a30fe5d6c8d20f3972dec0d7b4d0..221c0051c7a0e20c1b7a464df26eb63c ++this.timeSinceSting; if (this.timeSinceSting % 5 == 0 && this.random.nextInt(Mth.clamp(1200 - this.timeSinceSting, 1, 1200)) == 0) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0c3fec906da62b627f2570f78f2d3d46e07b93f1..252a1ab0c8cd7aaaf21a0683dc0611f9e6f0733c 100644 +index efcf075ec700e0d9f85a2e8b86580bc693dedf71..32bf6874734bc1a34675298c473ef0b87a232010 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1155,6 +1155,7 @@ public class PurpurWorldConfig { +@@ -1165,6 +1165,7 @@ public class PurpurWorldConfig { public boolean beeCanWorkAtNight = false; public boolean beeCanWorkInRain = false; public boolean beeAlwaysDropExp = false; @@ -28,7 +28,7 @@ index 0c3fec906da62b627f2570f78f2d3d46e07b93f1..252a1ab0c8cd7aaaf21a0683dc0611f9 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -1171,6 +1172,7 @@ public class PurpurWorldConfig { +@@ -1181,6 +1182,7 @@ public class PurpurWorldConfig { beeCanWorkAtNight = getBoolean("mobs.bee.can-work-at-night", beeCanWorkAtNight); beeCanWorkInRain = getBoolean("mobs.bee.can-work-in-rain", beeCanWorkInRain); beeAlwaysDropExp = getBoolean("mobs.bee.always-drop-exp", beeAlwaysDropExp); diff --git a/patches/server/0224-Give-bee-counts-in-beehives-to-Purpur-clients.patch b/patches/server/0225-Give-bee-counts-in-beehives-to-Purpur-clients.patch similarity index 98% rename from patches/server/0224-Give-bee-counts-in-beehives-to-Purpur-clients.patch rename to patches/server/0225-Give-bee-counts-in-beehives-to-Purpur-clients.patch index 97781867e..18cb6556b 100644 --- a/patches/server/0224-Give-bee-counts-in-beehives-to-Purpur-clients.patch +++ b/patches/server/0225-Give-bee-counts-in-beehives-to-Purpur-clients.patch @@ -29,7 +29,7 @@ index 29af03b8690e4d402d1e4e4516e4dc731b7b4323..56c6800ae5696397ffba2dc2e0393019 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 19e54e22ca2e024074c28dda3bbdf75ce9f1b083..2d32b5aaa2b2f33b773f9157aee4f7461c48147a 100644 +index 91d5c175752f6ee850adada6802c8af8f833d9c7..0d6b99822a3a743fe50362702afdca52f6a4a88e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -434,6 +434,11 @@ public class PurpurConfig { diff --git a/patches/server/0225-Configurable-farmland-trample-height.patch b/patches/server/0226-Configurable-farmland-trample-height.patch similarity index 94% rename from patches/server/0225-Configurable-farmland-trample-height.patch rename to patches/server/0226-Configurable-farmland-trample-height.patch index ad933891a..cac8e6958 100644 --- a/patches/server/0225-Configurable-farmland-trample-height.patch +++ b/patches/server/0226-Configurable-farmland-trample-height.patch @@ -35,10 +35,10 @@ index 12a0c69f8fec30fad64cbb00af2ca1bbf0ea5153..d0ec0722496ed931b48c4e7076fddbb1 org.bukkit.event.Cancellable cancellable; if (entity instanceof Player) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 252a1ab0c8cd7aaaf21a0683dc0611f9e6f0733c..9a920c2bb3efa5754245b76aa13a81ca01028fc1 100644 +index 32bf6874734bc1a34675298c473ef0b87a232010..d2eed1d2695b0baf3bec82cb4220f2f9390b3228 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -958,6 +958,7 @@ public class PurpurWorldConfig { +@@ -968,6 +968,7 @@ public class PurpurWorldConfig { public boolean farmlandTramplingDisabled = false; public boolean farmlandTramplingOnlyPlayers = false; public boolean farmlandTramplingFeatherFalling = false; @@ -46,7 +46,7 @@ index 252a1ab0c8cd7aaaf21a0683dc0611f9e6f0733c..9a920c2bb3efa5754245b76aa13a81ca private void farmlandSettings() { farmlandBypassMobGriefing = getBoolean("blocks.farmland.bypass-mob-griefing", farmlandBypassMobGriefing); farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); -@@ -965,6 +966,7 @@ public class PurpurWorldConfig { +@@ -975,6 +976,7 @@ public class PurpurWorldConfig { farmlandTramplingDisabled = getBoolean("blocks.farmland.disable-trampling", farmlandTramplingDisabled); farmlandTramplingOnlyPlayers = getBoolean("blocks.farmland.only-players-trample", farmlandTramplingOnlyPlayers); farmlandTramplingFeatherFalling = getBoolean("blocks.farmland.feather-fall-distance-affects-trampling", farmlandTramplingFeatherFalling); diff --git a/patches/server/0226-Configurable-player-pickup-exp-delay.patch b/patches/server/0227-Configurable-player-pickup-exp-delay.patch similarity index 95% rename from patches/server/0226-Configurable-player-pickup-exp-delay.patch rename to patches/server/0227-Configurable-player-pickup-exp-delay.patch index dbf7216d1..be59bd6d2 100644 --- a/patches/server/0226-Configurable-player-pickup-exp-delay.patch +++ b/patches/server/0227-Configurable-player-pickup-exp-delay.patch @@ -35,10 +35,10 @@ index 0460bdb52ce6b29cf57ef8f2d7f430e761c82d85..845c4af5d5d38d54de4a1b20fe32bf5d } else if (!entity.isRemoved()) { this.touch(entity); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9a920c2bb3efa5754245b76aa13a81ca01028fc1..e687752dafb2daa5ecc638171e4e8730e7d877c7 100644 +index d2eed1d2695b0baf3bec82cb4220f2f9390b3228..62c1ca38ab9f5fe748ac802b9cd15576736fd16f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -418,6 +418,7 @@ public class PurpurWorldConfig { +@@ -428,6 +428,7 @@ public class PurpurWorldConfig { public boolean playerRidableInWater = false; public boolean playerRemoveBindingWithWeakness = false; public int shiftRightClickRepairsMendingPoints = 0; @@ -46,7 +46,7 @@ index 9a920c2bb3efa5754245b76aa13a81ca01028fc1..e687752dafb2daa5ecc638171e4e8730 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -443,6 +444,7 @@ public class PurpurWorldConfig { +@@ -453,6 +454,7 @@ public class PurpurWorldConfig { playerRidableInWater = getBoolean("gameplay-mechanics.player.ridable-in-water", playerRidableInWater); playerRemoveBindingWithWeakness = getBoolean("gameplay-mechanics.player.curse-of-binding.remove-with-weakness", playerRemoveBindingWithWeakness); shiftRightClickRepairsMendingPoints = getInt("gameplay-mechanics.player.shift-right-click-repairs-mending-points", shiftRightClickRepairsMendingPoints); diff --git a/patches/server/0227-Allow-void-trading.patch b/patches/server/0228-Allow-void-trading.patch similarity index 93% rename from patches/server/0227-Allow-void-trading.patch rename to patches/server/0228-Allow-void-trading.patch index ac513522d..3296179f1 100644 --- a/patches/server/0227-Allow-void-trading.patch +++ b/patches/server/0228-Allow-void-trading.patch @@ -18,10 +18,10 @@ index 42db3e64b120b753e98a0fd7e3f56c7d28256fd2..ae2b9732b2795ea7faec96af4c27ccb0 } // Paper end - Fix merchant inventory not closing on entity removal diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e687752dafb2daa5ecc638171e4e8730e7d877c7..1cce789eedff397dc3c2a1edcd2991bc9925f5cb 100644 +index 62c1ca38ab9f5fe748ac802b9cd15576736fd16f..72d97b4ee263f52b91bb901a9443c7fcbd0ad458 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -419,6 +419,7 @@ public class PurpurWorldConfig { +@@ -429,6 +429,7 @@ public class PurpurWorldConfig { public boolean playerRemoveBindingWithWeakness = false; public int shiftRightClickRepairsMendingPoints = 0; public int playerExpPickupDelay = 2; @@ -29,7 +29,7 @@ index e687752dafb2daa5ecc638171e4e8730e7d877c7..1cce789eedff397dc3c2a1edcd2991bc private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -445,6 +446,7 @@ public class PurpurWorldConfig { +@@ -455,6 +456,7 @@ public class PurpurWorldConfig { playerRemoveBindingWithWeakness = getBoolean("gameplay-mechanics.player.curse-of-binding.remove-with-weakness", playerRemoveBindingWithWeakness); shiftRightClickRepairsMendingPoints = getInt("gameplay-mechanics.player.shift-right-click-repairs-mending-points", shiftRightClickRepairsMendingPoints); playerExpPickupDelay = getInt("gameplay-mechanics.player.exp-pickup-delay-ticks", playerExpPickupDelay); diff --git a/patches/server/0228-Configurable-phantom-size.patch b/patches/server/0229-Configurable-phantom-size.patch similarity index 93% rename from patches/server/0228-Configurable-phantom-size.patch rename to patches/server/0229-Configurable-phantom-size.patch index c963273a3..18e9653ec 100644 --- a/patches/server/0228-Configurable-phantom-size.patch +++ b/patches/server/0229-Configurable-phantom-size.patch @@ -22,10 +22,10 @@ index 0d81540d048cd4a08962bd24d3bdd49db708f83f..26077bd6eeedbdae84613188cb0f336a } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1cce789eedff397dc3c2a1edcd2991bc9925f5cb..ae0ad49d5efc06550a27c40c49f3c4b9cbcc63dd 100644 +index 72d97b4ee263f52b91bb901a9443c7fcbd0ad458..5b2cce70f98cd381bf0745bbc267d38a394afc74 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2097,6 +2097,8 @@ public class PurpurWorldConfig { +@@ -2107,6 +2107,8 @@ public class PurpurWorldConfig { public boolean phantomFlamesOnSwoop = false; public boolean phantomTakeDamageFromWater = false; public boolean phantomAlwaysDropExp = false; @@ -34,7 +34,7 @@ index 1cce789eedff397dc3c2a1edcd2991bc9925f5cb..ae0ad49d5efc06550a27c40c49f3c4b9 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -2133,6 +2135,13 @@ public class PurpurWorldConfig { +@@ -2143,6 +2145,13 @@ public class PurpurWorldConfig { phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop); phantomTakeDamageFromWater = getBoolean("mobs.phantom.takes-damage-from-water", phantomTakeDamageFromWater); phantomAlwaysDropExp = getBoolean("mobs.phantom.always-drop-exp", phantomAlwaysDropExp); diff --git a/patches/server/0229-Max-joins-per-second.patch b/patches/server/0230-Max-joins-per-second.patch similarity index 96% rename from patches/server/0229-Max-joins-per-second.patch rename to patches/server/0230-Max-joins-per-second.patch index 46482bbe9..ca1fd577b 100644 --- a/patches/server/0229-Max-joins-per-second.patch +++ b/patches/server/0230-Max-joins-per-second.patch @@ -31,7 +31,7 @@ index 58d28b6c1cc7da7d786f78308db971f7502ad844..9f274048be29ed54dd91983447beadf0 } // Paper end - Buffer joins to world diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 2d32b5aaa2b2f33b773f9157aee4f7461c48147a..42a916e89b838868967391b9c042ce5143d862d0 100644 +index 0d6b99822a3a743fe50362702afdca52f6a4a88e..5879af630bc3711a17d51f455585ccd31f7a6d88 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -456,8 +456,10 @@ public class PurpurConfig { diff --git a/patches/server/0230-Configurable-minimum-demand-for-trades.patch b/patches/server/0231-Configurable-minimum-demand-for-trades.patch similarity index 94% rename from patches/server/0230-Configurable-minimum-demand-for-trades.patch rename to patches/server/0231-Configurable-minimum-demand-for-trades.patch index c47c3f1d3..da87e474d 100644 --- a/patches/server/0230-Configurable-minimum-demand-for-trades.patch +++ b/patches/server/0231-Configurable-minimum-demand-for-trades.patch @@ -40,10 +40,10 @@ index 0efc8d997b34302c3e0a5d7ec73a11a940dbeefe..af157881d440b34cfe79fbc9b03cc9ef public ItemStack assemble() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ae0ad49d5efc06550a27c40c49f3c4b9cbcc63dd..95382bac24be84f0232930373e8d6128b76a8554 100644 +index 5b2cce70f98cd381bf0745bbc267d38a394afc74..a4bfd2b0e9b98c64c4309a7f660ed01c30ef09f0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2778,6 +2778,7 @@ public class PurpurWorldConfig { +@@ -2788,6 +2788,7 @@ public class PurpurWorldConfig { public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; @@ -51,7 +51,7 @@ index ae0ad49d5efc06550a27c40c49f3c4b9cbcc63dd..95382bac24be84f0232930373e8d6128 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2798,6 +2799,7 @@ public class PurpurWorldConfig { +@@ -2808,6 +2809,7 @@ public class PurpurWorldConfig { villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); villagerAlwaysDropExp = getBoolean("mobs.villager.always-drop-exp", villagerAlwaysDropExp); diff --git a/patches/server/0231-Lobotomize-stuck-villagers.patch b/patches/server/0232-Lobotomize-stuck-villagers.patch similarity index 97% rename from patches/server/0231-Lobotomize-stuck-villagers.patch rename to patches/server/0232-Lobotomize-stuck-villagers.patch index 0582fd7cc..0561660f0 100644 --- a/patches/server/0231-Lobotomize-stuck-villagers.patch +++ b/patches/server/0232-Lobotomize-stuck-villagers.patch @@ -104,10 +104,10 @@ index 6c15d40979fd3e3d246a447c432b321fbf29ada3..6ace76a829c88e2e747dbbcce0a6582c + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 95382bac24be84f0232930373e8d6128b76a8554..158d802ce38a9ae6c222cfa9e4a70806bd6eff51 100644 +index a4bfd2b0e9b98c64c4309a7f660ed01c30ef09f0..62de4877eb54fcb11a4f29e08b1b738a0fcd4076 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2779,6 +2779,9 @@ public class PurpurWorldConfig { +@@ -2789,6 +2789,9 @@ public class PurpurWorldConfig { public boolean villagerAllowTrading = true; public boolean villagerAlwaysDropExp = false; public int villagerMinimumDemand = 0; @@ -117,7 +117,7 @@ index 95382bac24be84f0232930373e8d6128b76a8554..158d802ce38a9ae6c222cfa9e4a70806 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2800,6 +2803,18 @@ public class PurpurWorldConfig { +@@ -2810,6 +2813,18 @@ public class PurpurWorldConfig { villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); villagerAlwaysDropExp = getBoolean("mobs.villager.always-drop-exp", villagerAlwaysDropExp); villagerMinimumDemand = getInt("mobs.villager.minimum-demand", villagerMinimumDemand); diff --git a/patches/server/0232-Option-for-villager-display-trade-item.patch b/patches/server/0233-Option-for-villager-display-trade-item.patch similarity index 92% rename from patches/server/0232-Option-for-villager-display-trade-item.patch rename to patches/server/0233-Option-for-villager-display-trade-item.patch index 935342875..ecce9cc98 100644 --- a/patches/server/0232-Option-for-villager-display-trade-item.patch +++ b/patches/server/0233-Option-for-villager-display-trade-item.patch @@ -17,10 +17,10 @@ index 18dad0825616c4167a0a7555689ee64910a87e09..6945992491027d43eca4f1ca697ad45c && this.lookTime > 0 && entity.getBrain().getMemory(MemoryModuleType.INTERACTION_TARGET).isPresent(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 158d802ce38a9ae6c222cfa9e4a70806bd6eff51..5c2639e142d04fee6c467292b1173917213a537c 100644 +index 62de4877eb54fcb11a4f29e08b1b738a0fcd4076..cc004ccc5bf2e2c2f908fc6d59f3cb7647da3fc9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2782,6 +2782,7 @@ public class PurpurWorldConfig { +@@ -2792,6 +2792,7 @@ public class PurpurWorldConfig { public boolean villagerLobotomizeEnabled = false; public int villagerLobotomizeCheckInterval = 100; public boolean villagerLobotomizeWaitUntilTradeLocked = false; @@ -28,7 +28,7 @@ index 158d802ce38a9ae6c222cfa9e4a70806bd6eff51..5c2639e142d04fee6c467292b1173917 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2815,6 +2816,7 @@ public class PurpurWorldConfig { +@@ -2825,6 +2826,7 @@ public class PurpurWorldConfig { villagerLobotomizeEnabled = getBoolean("mobs.villager.lobotomize.enabled", villagerLobotomizeEnabled); villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval); villagerLobotomizeWaitUntilTradeLocked = getBoolean("mobs.villager.lobotomize.wait-until-trade-locked", villagerLobotomizeWaitUntilTradeLocked); diff --git a/patches/server/0233-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch b/patches/server/0234-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch similarity index 93% rename from patches/server/0233-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch rename to patches/server/0234-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch index 9002b9b19..451414c52 100644 --- a/patches/server/0233-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch +++ b/patches/server/0234-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch @@ -17,10 +17,10 @@ index 6f22705072fecbe91196e4966fca2eeec060f120..ed2ae44f7cef5aed17d10cc8a7df0a22 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5c2639e142d04fee6c467292b1173917213a537c..ffdc11fd8c5b2059ac9fc6b9ec47f373c6329b63 100644 +index cc004ccc5bf2e2c2f908fc6d59f3cb7647da3fc9..3388478292e8e445f6da2ede9c44884467d551b7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1047,8 +1047,10 @@ public class PurpurWorldConfig { +@@ -1057,8 +1057,10 @@ public class PurpurWorldConfig { } public boolean spawnerDeactivateByRedstone = false; diff --git a/patches/server/0234-Config-for-mob-last-hurt-by-player-time.patch b/patches/server/0235-Config-for-mob-last-hurt-by-player-time.patch similarity index 92% rename from patches/server/0234-Config-for-mob-last-hurt-by-player-time.patch rename to patches/server/0235-Config-for-mob-last-hurt-by-player-time.patch index 7e1716dda..ce8f814a7 100644 --- a/patches/server/0234-Config-for-mob-last-hurt-by-player-time.patch +++ b/patches/server/0235-Config-for-mob-last-hurt-by-player-time.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config for mob last hurt by player time diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 24f002e44a7a485026a814c898b8569998805da8..580e01281f27a4cd1d3a243a7d4791b88910b5bb 100644 +index 119d2e57995fa20f34b88963b93c945ff87e0cab..36022a0ab50655363d26be7dba765e2261baccdf 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1561,13 +1561,13 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -38,10 +38,10 @@ index 1a8a76aa31bd1d1670be6e9cada162c540084cf9..b452ebbe11145987fb5e66b399938984 // Paper end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ffdc11fd8c5b2059ac9fc6b9ec47f373c6329b63..6dd04e6b344f1cfc32f3161832c9012ef5b83ee8 100644 +index 3388478292e8e445f6da2ede9c44884467d551b7..8f5ec67822c4e1619784e6efbc70d726692d13c5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -141,6 +141,7 @@ public class PurpurWorldConfig { +@@ -143,6 +143,7 @@ public class PurpurWorldConfig { public boolean mobsIgnoreRails = false; public boolean rainStopsAfterSleep = true; public boolean thunderStopsAfterSleep = true; @@ -49,7 +49,7 @@ index ffdc11fd8c5b2059ac9fc6b9ec47f373c6329b63..6dd04e6b344f1cfc32f3161832c9012e private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative); -@@ -165,6 +166,7 @@ public class PurpurWorldConfig { +@@ -175,6 +176,7 @@ public class PurpurWorldConfig { mobsIgnoreRails = getBoolean("gameplay-mechanics.mobs-ignore-rails", mobsIgnoreRails); rainStopsAfterSleep = getBoolean("gameplay-mechanics.rain-stops-after-sleep", rainStopsAfterSleep); thunderStopsAfterSleep = getBoolean("gameplay-mechanics.thunder-stops-after-sleep", thunderStopsAfterSleep); diff --git a/patches/server/0235-Anvil-repair-damage-options.patch b/patches/server/0236-Anvil-repair-damage-options.patch similarity index 97% rename from patches/server/0235-Anvil-repair-damage-options.patch rename to patches/server/0236-Anvil-repair-damage-options.patch index 55bf79728..59081445d 100644 --- a/patches/server/0235-Anvil-repair-damage-options.patch +++ b/patches/server/0236-Anvil-repair-damage-options.patch @@ -63,10 +63,10 @@ index 923357251ad950ec4f893e8771fcfa99de8a60c5..78a341ac80806f86f2ca0bd895fb091a protected InteractionResult useWithoutItem(BlockState state, Level world, BlockPos pos, Player player, BlockHitResult hit) { if (world.isClientSide) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6dd04e6b344f1cfc32f3161832c9012ef5b83ee8..4b70ba95de6c238f6d085b343e97a4cdc521eaf7 100644 +index 8f5ec67822c4e1619784e6efbc70d726692d13c5..8e66301da7706679c480f29843a6828bb5d93c07 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -819,9 +819,13 @@ public class PurpurWorldConfig { +@@ -829,9 +829,13 @@ public class PurpurWorldConfig { public boolean anvilAllowColors = false; public boolean anvilColorsUseMiniMessage; diff --git a/patches/server/0236-Option-to-disable-turtle-egg-trampling-with-feather-.patch b/patches/server/0237-Option-to-disable-turtle-egg-trampling-with-feather-.patch similarity index 94% rename from patches/server/0236-Option-to-disable-turtle-egg-trampling-with-feather-.patch rename to patches/server/0237-Option-to-disable-turtle-egg-trampling-with-feather-.patch index 44abee64a..dbdd44bfc 100644 --- a/patches/server/0236-Option-to-disable-turtle-egg-trampling-with-feather-.patch +++ b/patches/server/0237-Option-to-disable-turtle-egg-trampling-with-feather-.patch @@ -24,10 +24,10 @@ index 2f0e8aeb9c45853fca12ddd78a7d51813a600e67..08ba90f760abb9fb62311dddd7b5bdbd return world.purpurConfig.turtleEggsBypassMobGriefing || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // Purpur end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4b70ba95de6c238f6d085b343e97a4cdc521eaf7..1c9ecab6a0fe5da259fa1c080374dab8bd446911 100644 +index 8e66301da7706679c480f29843a6828bb5d93c07..8d5cedccedc8c8bcd32a4313c95bfa4f738c5259 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1075,12 +1075,14 @@ public class PurpurWorldConfig { +@@ -1085,12 +1085,14 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromMinecarts = false; public boolean turtleEggsBypassMobGriefing = false; public int turtleEggsRandomTickCrackChance = 500; diff --git a/patches/server/0237-Add-toggle-for-enchant-level-clamping.patch b/patches/server/0238-Add-toggle-for-enchant-level-clamping.patch similarity index 98% rename from patches/server/0237-Add-toggle-for-enchant-level-clamping.patch rename to patches/server/0238-Add-toggle-for-enchant-level-clamping.patch index 5e4013324..e1bddbfc0 100644 --- a/patches/server/0237-Add-toggle-for-enchant-level-clamping.patch +++ b/patches/server/0238-Add-toggle-for-enchant-level-clamping.patch @@ -59,7 +59,7 @@ index af18de11dd55938b6091f5ab183bd3fe4e8df152..2c741860afa1fa4d5798c68b84ec3fe1 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 42a916e89b838868967391b9c042ce5143d862d0..af79332c9c54ca314c59c6e503478e52c5970e31 100644 +index 5879af630bc3711a17d51f455585ccd31f7a6d88..7462474f7eff9f50644d0b7ceac341f237c93df0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -398,6 +398,7 @@ public class PurpurConfig { diff --git a/patches/server/0238-Skip-junit-tests-for-purpur-commands.patch b/patches/server/0239-Skip-junit-tests-for-purpur-commands.patch similarity index 100% rename from patches/server/0238-Skip-junit-tests-for-purpur-commands.patch rename to patches/server/0239-Skip-junit-tests-for-purpur-commands.patch diff --git a/patches/server/0239-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0240-Implement-configurable-search-radius-for-villagers-t.patch similarity index 93% rename from patches/server/0239-Implement-configurable-search-radius-for-villagers-t.patch rename to patches/server/0240-Implement-configurable-search-radius-for-villagers-t.patch index 224aaf71a..02e278df0 100644 --- a/patches/server/0239-Implement-configurable-search-radius-for-villagers-t.patch +++ b/patches/server/0240-Implement-configurable-search-radius-for-villagers-t.patch @@ -18,10 +18,10 @@ index dd74825c04543ae8c0bb1ab5eef6c8a152b621fd..dcf580d852ede8ea01f5d91944a224ec AABB axisalignedbb = this.getBoundingBox().inflate(10.0D, 10.0D, 10.0D); List list = world.getEntitiesOfClass(Villager.class, axisalignedbb); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1c9ecab6a0fe5da259fa1c080374dab8bd446911..e115fe44b20b1e6231d752770c27c4354f2a942c 100644 +index 8d5cedccedc8c8bcd32a4313c95bfa4f738c5259..78ce078a2b85f68d5c43fdf39ed4d60c8f10f65f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2793,6 +2793,8 @@ public class PurpurWorldConfig { +@@ -2803,6 +2803,8 @@ public class PurpurWorldConfig { public int villagerLobotomizeCheckInterval = 100; public boolean villagerLobotomizeWaitUntilTradeLocked = false; public boolean villagerDisplayTradeItem = true; @@ -30,7 +30,7 @@ index 1c9ecab6a0fe5da259fa1c080374dab8bd446911..e115fe44b20b1e6231d752770c27c435 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2827,6 +2829,8 @@ public class PurpurWorldConfig { +@@ -2837,6 +2839,8 @@ public class PurpurWorldConfig { villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval); villagerLobotomizeWaitUntilTradeLocked = getBoolean("mobs.villager.lobotomize.wait-until-trade-locked", villagerLobotomizeWaitUntilTradeLocked); villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem); diff --git a/patches/server/0240-Stonecutter-damage.patch b/patches/server/0241-Stonecutter-damage.patch similarity index 96% rename from patches/server/0240-Stonecutter-damage.patch rename to patches/server/0241-Stonecutter-damage.patch index 0e0adcbc4..b0d080371 100644 --- a/patches/server/0240-Stonecutter-damage.patch +++ b/patches/server/0241-Stonecutter-damage.patch @@ -54,7 +54,7 @@ index 894668c96ac36e737910a25cf89651236246200c..812091bf6efc067b21b9723b8241360d } // CraftBukkit end diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSources.java b/src/main/java/net/minecraft/world/damagesource/DamageSources.java -index 32c0a2df609acc1ecdd5a0a98a997b2f33525621..f0568c3d731afaf610ac2f45db53148d38338cdf 100644 +index 13b596a1e06fa66396c43a6c72659d4342bf6549..5ffe772e29dfd422b664e8123e7f5cf396158674 100644 --- a/src/main/java/net/minecraft/world/damagesource/DamageSources.java +++ b/src/main/java/net/minecraft/world/damagesource/DamageSources.java @@ -45,12 +45,14 @@ public class DamageSources { @@ -128,7 +128,7 @@ index a49193a023bbd9b65bcd3652dc9c241720500755..6fed586c9a778f7a57e1b4ca2e6f2dbc } else if (source.is(DamageTypes.HOT_FLOOR)) { cause = DamageCause.HOT_FLOOR; diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index af79332c9c54ca314c59c6e503478e52c5970e31..07d6455c781b8743a833cbc04576015433686c4b 100644 +index 7462474f7eff9f50644d0b7ceac341f237c93df0..cb8f67f0ad3531b110613c0ffb3c0cc23da23529 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -209,8 +209,10 @@ public class PurpurConfig { @@ -143,10 +143,10 @@ index af79332c9c54ca314c59c6e503478e52c5970e31..07d6455c781b8743a833cbc045760154 public static boolean advancementOnlyBroadcastToAffectedPlayer = false; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e115fe44b20b1e6231d752770c27c4354f2a942c..97d7a74c1e6879b2a67c4243b03c35e998773faf 100644 +index 78ce078a2b85f68d5c43fdf39ed4d60c8f10f65f..d1fd7727b7ada1ac1390a7eb1832c35706d8b209 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1070,6 +1070,11 @@ public class PurpurWorldConfig { +@@ -1080,6 +1080,11 @@ public class PurpurWorldConfig { spongeAbsorbsWaterFromMud = getBoolean("blocks.sponge.absorbs-water-from-mud", spongeAbsorbsWaterFromMud); } diff --git a/patches/server/0241-Configurable-damage-settings-for-magma-blocks.patch b/patches/server/0242-Configurable-damage-settings-for-magma-blocks.patch similarity index 93% rename from patches/server/0241-Configurable-damage-settings-for-magma-blocks.patch rename to patches/server/0242-Configurable-damage-settings-for-magma-blocks.patch index a69aacde4..6296cfecd 100644 --- a/patches/server/0241-Configurable-damage-settings-for-magma-blocks.patch +++ b/patches/server/0242-Configurable-damage-settings-for-magma-blocks.patch @@ -18,10 +18,10 @@ index 77bbdc15472d656fd40e841a70e34d3d31580819..55ae530fac54236ea5614f8e92c30feb } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 97d7a74c1e6879b2a67c4243b03c35e998773faf..3d06c206b65a1288c72817f82cfa5b9e5ae026ee 100644 +index d1fd7727b7ada1ac1390a7eb1832c35706d8b209..1d0accb74cedf842fb6f8e726943b9ddee582e4a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1016,6 +1016,13 @@ public class PurpurWorldConfig { +@@ -1026,6 +1026,13 @@ public class PurpurWorldConfig { pistonBlockPushLimit = getInt("blocks.piston.block-push-limit", pistonBlockPushLimit); } diff --git a/patches/server/0242-Add-config-for-snow-on-blue-ice.patch b/patches/server/0243-Add-config-for-snow-on-blue-ice.patch similarity index 93% rename from patches/server/0242-Add-config-for-snow-on-blue-ice.patch rename to patches/server/0243-Add-config-for-snow-on-blue-ice.patch index 75d067b63..a09a64e07 100644 --- a/patches/server/0242-Add-config-for-snow-on-blue-ice.patch +++ b/patches/server/0243-Add-config-for-snow-on-blue-ice.patch @@ -22,10 +22,10 @@ index 93e8e5107ac047c1f2579b4fe6b0a202edb695f6..f82d275aac7bf3949d3dcc412c7e39e1 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3d06c206b65a1288c72817f82cfa5b9e5ae026ee..dd72530cfa9f1790ebab063e094c255d597dba8a 100644 +index 1d0accb74cedf842fb6f8e726943b9ddee582e4a..335cb3101af8fdf7b8518f847cf54d06e079459e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -997,9 +997,11 @@ public class PurpurWorldConfig { +@@ -1007,9 +1007,11 @@ public class PurpurWorldConfig { public boolean mobsSpawnOnPackedIce = true; public boolean mobsSpawnOnBlueIce = true; diff --git a/patches/server/0243-Skeletons-eat-wither-roses.patch b/patches/server/0244-Skeletons-eat-wither-roses.patch similarity index 96% rename from patches/server/0243-Skeletons-eat-wither-roses.patch rename to patches/server/0244-Skeletons-eat-wither-roses.patch index c3862e7ab..a79e1c466 100644 --- a/patches/server/0243-Skeletons-eat-wither-roses.patch +++ b/patches/server/0244-Skeletons-eat-wither-roses.patch @@ -94,10 +94,10 @@ index 1aae461eed332fe31c1449c47d0928f655c740da..9eb6ed001bfc578311300977dda6f3f1 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index dd72530cfa9f1790ebab063e094c255d597dba8a..66c9464f6c4241c3a14a4057a216418fd5ab067e 100644 +index 335cb3101af8fdf7b8518f847cf54d06e079459e..3745acb6de975db70c78493907eb8784d3a10d75 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2476,6 +2476,7 @@ public class PurpurWorldConfig { +@@ -2486,6 +2486,7 @@ public class PurpurWorldConfig { public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; @@ -105,7 +105,7 @@ index dd72530cfa9f1790ebab063e094c255d597dba8a..66c9464f6c4241c3a14a4057a216418f private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2489,6 +2490,7 @@ public class PurpurWorldConfig { +@@ -2499,6 +2500,7 @@ public class PurpurWorldConfig { skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); skeletonHeadVisibilityPercent = getDouble("mobs.skeleton.head-visibility-percent", skeletonHeadVisibilityPercent); diff --git a/patches/server/0244-Enchantment-Table-Persists-Lapis.patch b/patches/server/0245-Enchantment-Table-Persists-Lapis.patch similarity index 97% rename from patches/server/0244-Enchantment-Table-Persists-Lapis.patch rename to patches/server/0245-Enchantment-Table-Persists-Lapis.patch index 834e303f8..f420bb114 100644 --- a/patches/server/0244-Enchantment-Table-Persists-Lapis.patch +++ b/patches/server/0245-Enchantment-Table-Persists-Lapis.patch @@ -137,10 +137,10 @@ index d47bc2f54c4722a0b8c419b99ee57eb3cb25d750..fdeabdcc781b605d6f3ee18528fd380f + // Purpur } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 66c9464f6c4241c3a14a4057a216418fd5ab067e..8ad6437173dd39aa7415709efc8f65404abf7bd9 100644 +index 3745acb6de975db70c78493907eb8784d3a10d75..71795b553145ae497c31947f5fbb03574a860767 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1513,6 +1513,11 @@ public class PurpurWorldConfig { +@@ -1523,6 +1523,11 @@ public class PurpurWorldConfig { elderGuardianAlwaysDropExp = getBoolean("mobs.elder_guardian.always-drop-exp", elderGuardianAlwaysDropExp); } diff --git a/patches/server/0245-Spark-Profiler.patch b/patches/server/0246-Spark-Profiler.patch similarity index 100% rename from patches/server/0245-Spark-Profiler.patch rename to patches/server/0246-Spark-Profiler.patch diff --git a/patches/server/0246-Option-to-disable-kick-for-out-of-order-chat.patch b/patches/server/0247-Option-to-disable-kick-for-out-of-order-chat.patch similarity index 95% rename from patches/server/0246-Option-to-disable-kick-for-out-of-order-chat.patch rename to patches/server/0247-Option-to-disable-kick-for-out-of-order-chat.patch index aef122660..ea255b08c 100644 --- a/patches/server/0246-Option-to-disable-kick-for-out-of-order-chat.patch +++ b/patches/server/0247-Option-to-disable-kick-for-out-of-order-chat.patch @@ -18,7 +18,7 @@ index 395ad65503c87250c0e2fa8112208f26fd3681be..7b28ec1c6d87bad32b46c6ac6cf9e97d voxelshape1 = (VoxelShape) iterator.next(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 07d6455c781b8743a833cbc04576015433686c4b..d038e62a0151e3b5c9dee06f1b2682684d0b496e 100644 +index cb8f67f0ad3531b110613c0ffb3c0cc23da23529..620f1207fc773f8602b748128557f1c73f0319fb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -461,9 +461,11 @@ public class PurpurConfig { diff --git a/patches/server/0247-Config-for-sculk-shrieker-can_summon-state.patch b/patches/server/0248-Config-for-sculk-shrieker-can_summon-state.patch similarity index 92% rename from patches/server/0247-Config-for-sculk-shrieker-can_summon-state.patch rename to patches/server/0248-Config-for-sculk-shrieker-can_summon-state.patch index a9326ca70..43c83bb39 100644 --- a/patches/server/0247-Config-for-sculk-shrieker-can_summon-state.patch +++ b/patches/server/0248-Config-for-sculk-shrieker-can_summon-state.patch @@ -18,10 +18,10 @@ index b6b367492ebe2af3e63381bef935c6077f6ddb27..09f34c30d9a03751ed826b26375ac5ae @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8ad6437173dd39aa7415709efc8f65404abf7bd9..0811baed3de98fa011f191afeedb5cccd1a0ef4b 100644 +index 71795b553145ae497c31947f5fbb03574a860767..c94463436d3bb8c6658f489746db450896fd14fa 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1056,6 +1056,11 @@ public class PurpurWorldConfig { +@@ -1066,6 +1066,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0248-Config-to-not-let-coral-die.patch b/patches/server/0249-Config-to-not-let-coral-die.patch similarity index 94% rename from patches/server/0248-Config-to-not-let-coral-die.patch rename to patches/server/0249-Config-to-not-let-coral-die.patch index dce57f281..1532269c0 100644 --- a/patches/server/0248-Config-to-not-let-coral-die.patch +++ b/patches/server/0249-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 0811baed3de98fa011f191afeedb5cccd1a0ef4b..2e7b471b23694cdce1b8017c14e1f2ca62b90538 100644 +index c94463436d3bb8c6658f489746db450896fd14fa..7b447d350029ecdb5a6539e15d3adbc4dcb05c59 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -903,6 +903,11 @@ public class PurpurWorldConfig { +@@ -913,6 +913,11 @@ public class PurpurWorldConfig { composterBulkProcess = getBoolean("blocks.composter.sneak-to-bulk-process", composterBulkProcess); } diff --git a/patches/server/0249-Add-local-difficulty-api.patch b/patches/server/0250-Add-local-difficulty-api.patch similarity index 100% rename from patches/server/0249-Add-local-difficulty-api.patch rename to patches/server/0250-Add-local-difficulty-api.patch diff --git a/patches/server/0250-Add-toggle-for-RNG-manipulation.patch b/patches/server/0251-Add-toggle-for-RNG-manipulation.patch similarity index 95% rename from patches/server/0250-Add-toggle-for-RNG-manipulation.patch rename to patches/server/0251-Add-toggle-for-RNG-manipulation.patch index bc62eb562..2e00d9f13 100644 --- a/patches/server/0250-Add-toggle-for-RNG-manipulation.patch +++ b/patches/server/0251-Add-toggle-for-RNG-manipulation.patch @@ -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 2e7b471b23694cdce1b8017c14e1f2ca62b90538..da2bde5acf5a2e79ad2885f4727844e85de5ca0d 100644 +index 7b447d350029ecdb5a6539e15d3adbc4dcb05c59..add6e4eb827831478b33502aeb74a230bcd072fb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -202,9 +202,11 @@ public class PurpurWorldConfig { +@@ -212,9 +212,11 @@ public class PurpurWorldConfig { public int entityLifeSpan = 0; public float entityLeftHandedChance = 0.05f; diff --git a/patches/server/0251-Remove-Timings.patch b/patches/server/0252-Remove-Timings.patch similarity index 100% rename from patches/server/0251-Remove-Timings.patch rename to patches/server/0252-Remove-Timings.patch diff --git a/patches/server/0252-Remove-Mojang-Profiler.patch b/patches/server/0253-Remove-Mojang-Profiler.patch similarity index 99% rename from patches/server/0252-Remove-Mojang-Profiler.patch rename to patches/server/0253-Remove-Mojang-Profiler.patch index 48bd9762b..482365b9c 100644 --- a/patches/server/0252-Remove-Mojang-Profiler.patch +++ b/patches/server/0253-Remove-Mojang-Profiler.patch @@ -1211,7 +1211,7 @@ index 68e8f9913055219486ce19d95dcf9d7c76e08082..2c3ad553272ad651e6ca26917719e6d9 } } else { diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 580e01281f27a4cd1d3a243a7d4791b88910b5bb..5e979618feda785d3f36cf085e72eed23bdd3f22 100644 +index 36022a0ab50655363d26be7dba765e2261baccdf..09cbc472d89d7d8730aedb76ef584b1ff159756b 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -423,7 +423,7 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0253-Add-more-logger-output-for-invalid-movement-kicks.patch b/patches/server/0254-Add-more-logger-output-for-invalid-movement-kicks.patch similarity index 100% rename from patches/server/0253-Add-more-logger-output-for-invalid-movement-kicks.patch rename to patches/server/0254-Add-more-logger-output-for-invalid-movement-kicks.patch diff --git a/patches/server/0254-Add-Bee-API.patch b/patches/server/0255-Add-Bee-API.patch similarity index 100% rename from patches/server/0254-Add-Bee-API.patch rename to patches/server/0255-Add-Bee-API.patch diff --git a/patches/server/0255-Debug-Marker-API.patch b/patches/server/0256-Debug-Marker-API.patch similarity index 100% rename from patches/server/0255-Debug-Marker-API.patch rename to patches/server/0256-Debug-Marker-API.patch diff --git a/patches/server/0256-mob-spawning-option-to-ignore-creative-players.patch b/patches/server/0257-mob-spawning-option-to-ignore-creative-players.patch similarity index 92% rename from patches/server/0256-mob-spawning-option-to-ignore-creative-players.patch rename to patches/server/0257-mob-spawning-option-to-ignore-creative-players.patch index 0c8370562..3b71d823b 100644 --- a/patches/server/0256-mob-spawning-option-to-ignore-creative-players.patch +++ b/patches/server/0257-mob-spawning-option-to-ignore-creative-players.patch @@ -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 da2bde5acf5a2e79ad2885f4727844e85de5ca0d..d678fbb4ea310b4f833f131618ed5901f1eebd7e 100644 +index add6e4eb827831478b33502aeb74a230bcd072fb..79577d858edda20329e91520e0c0f66254272838 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -375,6 +375,7 @@ public class PurpurWorldConfig { +@@ -385,6 +385,7 @@ public class PurpurWorldConfig { public boolean phantomSpawning; public boolean villagerTraderSpawning; public boolean villageSiegeSpawning; @@ -29,7 +29,7 @@ index da2bde5acf5a2e79ad2885f4727844e85de5ca0d..d678fbb4ea310b4f833f131618ed5901 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); -@@ -383,6 +384,7 @@ public class PurpurWorldConfig { +@@ -393,6 +394,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/server/0257-Add-skeleton-bow-accuracy-option.patch b/patches/server/0258-Add-skeleton-bow-accuracy-option.patch similarity index 94% rename from patches/server/0257-Add-skeleton-bow-accuracy-option.patch rename to patches/server/0258-Add-skeleton-bow-accuracy-option.patch index 2688c8cb2..af8f5577b 100644 --- a/patches/server/0257-Add-skeleton-bow-accuracy-option.patch +++ b/patches/server/0258-Add-skeleton-bow-accuracy-option.patch @@ -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 d678fbb4ea310b4f833f131618ed5901f1eebd7e..af8be03143ea89af74ba86b6c0777c13e2eb7121 100644 +index 79577d858edda20329e91520e0c0f66254272838..4cf4d2c3fef588cc4fbda4d27a08c7e34f11c1e6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2496,6 +2496,8 @@ public class PurpurWorldConfig { +@@ -2506,6 +2506,8 @@ public class PurpurWorldConfig { public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; public int skeletonFeedWitherRoses = 0; @@ -30,7 +30,7 @@ index d678fbb4ea310b4f833f131618ed5901f1eebd7e..af8be03143ea89af74ba86b6c0777c13 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2510,6 +2512,18 @@ public class PurpurWorldConfig { +@@ -2520,6 +2522,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/server/0258-Add-death-screen-API.patch b/patches/server/0259-Add-death-screen-API.patch similarity index 100% rename from patches/server/0258-Add-death-screen-API.patch rename to patches/server/0259-Add-death-screen-API.patch diff --git a/patches/server/0259-Implement-ram-and-rambar-commands.patch b/patches/server/0260-Implement-ram-and-rambar-commands.patch similarity index 99% rename from patches/server/0259-Implement-ram-and-rambar-commands.patch rename to patches/server/0260-Implement-ram-and-rambar-commands.patch index 63ca55dde..845f5a78e 100644 --- a/patches/server/0259-Implement-ram-and-rambar-commands.patch +++ b/patches/server/0260-Implement-ram-and-rambar-commands.patch @@ -60,7 +60,7 @@ index 826b7e2bb897609a084555632f691ddb38882058..42a623254bd2886d09eb0cfeb01dd12d // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index d038e62a0151e3b5c9dee06f1b2682684d0b496e..b94f7b882405345f6154383beaef8d89673726c9 100644 +index 620f1207fc773f8602b748128557f1c73f0319fb..62612451c23bb146e82f4082ca8677e5dc57a08f 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/server/0260-Add-an-option-to-fix-MC-3304-projectile-looting.patch b/patches/server/0261-Add-an-option-to-fix-MC-3304-projectile-looting.patch similarity index 98% rename from patches/server/0260-Add-an-option-to-fix-MC-3304-projectile-looting.patch rename to patches/server/0261-Add-an-option-to-fix-MC-3304-projectile-looting.patch index 2f4116d77..66fc363c9 100644 --- a/patches/server/0260-Add-an-option-to-fix-MC-3304-projectile-looting.patch +++ b/patches/server/0261-Add-an-option-to-fix-MC-3304-projectile-looting.patch @@ -86,7 +86,7 @@ index cfe953bc924f46b570e37395ac0f05ebcb82eb39..5500e7ada2dd783cc1317968a3e54696 if (context.hasParam(LootContextParams.LOOTING_MOD)) { i = context.getParamOrNull(LootContextParams.LOOTING_MOD); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index b94f7b882405345f6154383beaef8d89673726c9..9cda9416f015356a57c28fa5e4f62987f72c15f1 100644 +index 62612451c23bb146e82f4082ca8677e5dc57a08f..3b3d5bd9e645f440e033abd3c234a017972efa59 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -497,4 +497,9 @@ public class PurpurConfig { diff --git a/patches/server/0261-Configurable-block-blast-resistance.patch b/patches/server/0262-Configurable-block-blast-resistance.patch similarity index 96% rename from patches/server/0261-Configurable-block-blast-resistance.patch rename to patches/server/0262-Configurable-block-blast-resistance.patch index 5067e60fa..482d21fe3 100644 --- a/patches/server/0261-Configurable-block-blast-resistance.patch +++ b/patches/server/0262-Configurable-block-blast-resistance.patch @@ -18,7 +18,7 @@ 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 9cda9416f015356a57c28fa5e4f62987f72c15f1..bddf643f229d2a62746d89133e7013f1a3fafb45 100644 +index 3b3d5bd9e645f440e033abd3c234a017972efa59..b2207e2baed339adb1594f19f9a3d4a709669935 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 { diff --git a/patches/server/0262-Configurable-block-fall-damage-modifiers.patch b/patches/server/0263-Configurable-block-fall-damage-modifiers.patch similarity index 96% rename from patches/server/0262-Configurable-block-fall-damage-modifiers.patch rename to patches/server/0263-Configurable-block-fall-damage-modifiers.patch index a56fb6709..541a9698e 100644 --- a/patches/server/0262-Configurable-block-fall-damage-modifiers.patch +++ b/patches/server/0263-Configurable-block-fall-damage-modifiers.patch @@ -18,7 +18,7 @@ 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 6f7e90d406b088fee0eb254f8042bd404d8f36fa..c6ed00f89127a2857dfb9ce9e04513e5cf510dfb 100644 +index 7ffe51eedc9d086424cf450026bdc260249864c4..5ae3decf100d21f7d4a471c155eaf5e00e996580 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 { @@ -32,7 +32,7 @@ index 6f7e90d406b088fee0eb254f8042bd404d8f36fa..c6ed00f89127a2857dfb9ce9e04513e5 // Paper start public final boolean isDestroyable() { return io.papermc.paper.configuration.GlobalConfiguration.get().unsupportedSettings.allowPermanentBlockBreakExploits || -@@ -467,7 +471,7 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -486,7 +490,7 @@ public class Block extends BlockBehaviour implements ItemLike { } public void fallOn(Level world, BlockState state, BlockPos pos, Entity entity, float fallDistance) { @@ -54,7 +54,7 @@ index ef364aa171a48482a45bc18cfe730ec20c3f7be6..74971d90506aa253d5ee821b5390fb25 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index bddf643f229d2a62746d89133e7013f1a3fafb45..05c90e15cd487335840c7841874ebb99c576e1cc 100644 +index b2207e2baed339adb1594f19f9a3d4a709669935..508b094272bede66826ad0f4908f115454b7d4f2 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 { diff --git a/patches/server/0263-Language-API.patch b/patches/server/0264-Language-API.patch similarity index 100% rename from patches/server/0263-Language-API.patch rename to patches/server/0264-Language-API.patch diff --git a/patches/server/0264-Milk-Keeps-Beneficial-Effects.patch b/patches/server/0265-Milk-Keeps-Beneficial-Effects.patch similarity index 86% rename from patches/server/0264-Milk-Keeps-Beneficial-Effects.patch rename to patches/server/0265-Milk-Keeps-Beneficial-Effects.patch index af54814e3..de09bd418 100644 --- a/patches/server/0264-Milk-Keeps-Beneficial-Effects.patch +++ b/patches/server/0265-Milk-Keeps-Beneficial-Effects.patch @@ -5,7 +5,7 @@ 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 5e979618feda785d3f36cf085e72eed23bdd3f22..fa698cfefccdddf5e5e9938a2959004c70f743a7 100644 +index 09cbc472d89d7d8730aedb76ef584b1ff159756b..53ff232129443ba3242cfc57fc57026bf76d96e8 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 { @@ -30,7 +30,7 @@ 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 af8be03143ea89af74ba86b6c0777c13e2eb7121..af8819ef2c6edc91e6ba2c11f31b677bf136117e 100644 +index 4cf4d2c3fef588cc4fbda4d27a08c7e34f11c1e6..80b329b028f5224ce6a9d9ea64c92c633548fcb8 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 { @@ -40,12 +40,12 @@ index af8be03143ea89af74ba86b6c0777c13e2eb7121..af8819ef2c6edc91e6ba2c11f31b677b + public boolean milkClearsBeneficialEffects = true; public boolean noteBlockIgnoreAbove = false; public boolean persistentDroppableEntityDisplayNames = true; - public boolean projectilesBypassMobGriefing = false; -@@ -153,6 +154,7 @@ public class PurpurWorldConfig { + public boolean persistentTileEntityLore = false; +@@ -155,6 +156,7 @@ public class PurpurWorldConfig { 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); - persistentDroppableEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-droppable-entity-display-names", persistentDroppableEntityDisplayNames); - projectilesBypassMobGriefing = getBoolean("gameplay-mechanics.projectiles-bypass-mob-griefing", projectilesBypassMobGriefing); + if (PurpurConfig.version < 35) { + boolean oldVal = getBoolean("gameplay-mechanics.persistent-tileentity-display-names-and-lore", persistentTileEntityLore); diff --git a/patches/server/0265-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch b/patches/server/0266-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch similarity index 100% rename from patches/server/0265-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch rename to patches/server/0266-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch diff --git a/patches/server/0266-Add-log-suppression-for-LibraryLoader.patch b/patches/server/0267-Add-log-suppression-for-LibraryLoader.patch similarity index 94% rename from patches/server/0266-Add-log-suppression-for-LibraryLoader.patch rename to patches/server/0267-Add-log-suppression-for-LibraryLoader.patch index aa5f01e9a..88afdd468 100644 --- a/patches/server/0266-Add-log-suppression-for-LibraryLoader.patch +++ b/patches/server/0267-Add-log-suppression-for-LibraryLoader.patch @@ -5,7 +5,7 @@ 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 05c90e15cd487335840c7841874ebb99c576e1cc..33011a76cf02d7fa2860432ad13a8666e6094b4a 100644 +index 508b094272bede66826ad0f4908f115454b7d4f2..16273aec24a4824557c0cfb2af2ac782a7a7ab75 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 { diff --git a/patches/server/0267-Add-option-to-allow-creeper-to-encircle-target-when-.patch b/patches/server/0268-Add-option-to-allow-creeper-to-encircle-target-when-.patch similarity index 92% rename from patches/server/0267-Add-option-to-allow-creeper-to-encircle-target-when-.patch rename to patches/server/0268-Add-option-to-allow-creeper-to-encircle-target-when-.patch index b8349c464..7f9529f5f 100644 --- a/patches/server/0267-Add-option-to-allow-creeper-to-encircle-target-when-.patch +++ b/patches/server/0268-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 af8819ef2c6edc91e6ba2c11f31b677bf136117e..a3da09a662603d90da4e343e400227e317b4bf24 100644 +index 80b329b028f5224ce6a9d9ea64c92c633548fcb8..396721bdc1a2bc58bd9d475d454d8f558299ac03 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1403,6 +1403,7 @@ public class PurpurWorldConfig { +@@ -1413,6 +1413,7 @@ public class PurpurWorldConfig { public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; public double creeperHeadVisibilityPercent = 0.5D; @@ -35,7 +35,7 @@ index af8819ef2c6edc91e6ba2c11f31b677bf136117e..a3da09a662603d90da4e343e400227e3 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1421,6 +1422,7 @@ public class PurpurWorldConfig { +@@ -1431,6 +1432,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/server/0268-Fire-Immunity-API.patch b/patches/server/0269-Fire-Immunity-API.patch similarity index 100% rename from patches/server/0268-Fire-Immunity-API.patch rename to patches/server/0269-Fire-Immunity-API.patch diff --git a/patches/server/0269-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch b/patches/server/0270-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch similarity index 93% rename from patches/server/0269-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch rename to patches/server/0270-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch index 0253810b8..502e40e86 100644 --- a/patches/server/0269-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch +++ b/patches/server/0270-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch @@ -17,10 +17,10 @@ index 7a27388b5155e7b2478b0daa02cb616829a5d4a2..3aae4fa4176c0bf170f4532ae187e312 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a3da09a662603d90da4e343e400227e317b4bf24..f7eba6f2e188ee5504db11feb6b433c46b82f374 100644 +index 396721bdc1a2bc58bd9d475d454d8f558299ac03..4ec1c7efc14edc4245c141bf75f00066dd329ecf 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -415,6 +415,7 @@ public class PurpurWorldConfig { +@@ -425,6 +425,7 @@ public class PurpurWorldConfig { public String playerDeathExpDropEquation = "expLevel * 7"; public int playerDeathExpDropMax = 100; public boolean teleportIfOutsideBorder = false; @@ -28,7 +28,7 @@ index a3da09a662603d90da4e343e400227e317b4bf24..f7eba6f2e188ee5504db11feb6b433c4 public boolean totemOfUndyingWorksInInventory = false; public boolean playerFixStuckPortal = false; public boolean creativeOnePunch = false; -@@ -442,6 +443,7 @@ public class PurpurWorldConfig { +@@ -452,6 +453,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); diff --git a/patches/server/0270-Added-got-ram-event.patch b/patches/server/0271-Added-got-ram-event.patch similarity index 100% rename from patches/server/0270-Added-got-ram-event.patch rename to patches/server/0271-Added-got-ram-event.patch diff --git a/patches/server/0271-Log-skipped-entity-s-position.patch b/patches/server/0272-Log-skipped-entity-s-position.patch similarity index 100% rename from patches/server/0271-Log-skipped-entity-s-position.patch rename to patches/server/0272-Log-skipped-entity-s-position.patch diff --git a/patches/server/0272-End-Crystal-Cramming.patch b/patches/server/0273-End-Crystal-Cramming.patch similarity index 91% rename from patches/server/0272-End-Crystal-Cramming.patch rename to patches/server/0273-End-Crystal-Cramming.patch index 01113d3f5..0b23b567e 100644 --- a/patches/server/0272-End-Crystal-Cramming.patch +++ b/patches/server/0273-End-Crystal-Cramming.patch @@ -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 f7eba6f2e188ee5504db11feb6b433c46b82f374..1c31adc9bebd8a282719ecc16d60bd45672507fe 100644 +index 4ec1c7efc14edc4245c141bf75f00066dd329ecf..c2a1038235d4883bf4440c90e13c2d9fc399178b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -946,6 +946,7 @@ public class PurpurWorldConfig { +@@ -956,6 +956,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 f7eba6f2e188ee5504db11feb6b433c46b82f374..1c31adc9bebd8a282719ecc16d60bd45 private void endCrystalSettings() { if (PurpurConfig.version < 31) { if ("DESTROY".equals(getString("blocks.end-crystal.baseless.explosion-effect", baselessEndCrystalExplosionEffect.name()))) { -@@ -973,6 +974,7 @@ public class PurpurWorldConfig { +@@ -983,6 +984,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/server/0273-Option-to-allow-beacon-effects-when-covered-by-tinte.patch b/patches/server/0274-Option-to-allow-beacon-effects-when-covered-by-tinte.patch similarity index 95% rename from patches/server/0273-Option-to-allow-beacon-effects-when-covered-by-tinte.patch rename to patches/server/0274-Option-to-allow-beacon-effects-when-covered-by-tinte.patch index b7c21f3d7..747628bc0 100644 --- a/patches/server/0273-Option-to-allow-beacon-effects-when-covered-by-tinte.patch +++ b/patches/server/0274-Option-to-allow-beacon-effects-when-covered-by-tinte.patch @@ -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 1c31adc9bebd8a282719ecc16d60bd45672507fe..9702ce32484954ec0aa4828315df443c1f518ec2 100644 +index c2a1038235d4883bf4440c90e13c2d9fc399178b..5b54dcf2d352aa4f998d887fe2d8455b396794a2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -845,11 +845,13 @@ public class PurpurWorldConfig { +@@ -855,11 +855,13 @@ public class PurpurWorldConfig { public int beaconLevelTwo = 30; public int beaconLevelThree = 40; public int beaconLevelFour = 50; diff --git a/patches/server/0274-Add-attribute-clamping-and-armor-limit-config.patch b/patches/server/0275-Add-attribute-clamping-and-armor-limit-config.patch similarity index 97% rename from patches/server/0274-Add-attribute-clamping-and-armor-limit-config.patch rename to patches/server/0275-Add-attribute-clamping-and-armor-limit-config.patch index a3570be64..8eba08dd9 100644 --- a/patches/server/0274-Add-attribute-clamping-and-armor-limit-config.patch +++ b/patches/server/0275-Add-attribute-clamping-and-armor-limit-config.patch @@ -39,7 +39,7 @@ index f0703302e7dbbda88de8c648d20d87c55ed9b1e0..a913ebabaa5f443afa987b972355a8f8 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 33011a76cf02d7fa2860432ad13a8666e6094b4a..7f57982ffdd3e571937e9f4a2fa4ac0ea88373f8 100644 +index 16273aec24a4824557c0cfb2af2ac782a7a7ab75..e7bce4121f7bc2fe0acd8860a73c58dfed73330b 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 { diff --git a/patches/server/0275-Config-to-remove-explosion-radius-clamp.patch b/patches/server/0276-Config-to-remove-explosion-radius-clamp.patch similarity index 93% rename from patches/server/0275-Config-to-remove-explosion-radius-clamp.patch rename to patches/server/0276-Config-to-remove-explosion-radius-clamp.patch index 574d2b886..33bb5f8c5 100644 --- a/patches/server/0275-Config-to-remove-explosion-radius-clamp.patch +++ b/patches/server/0276-Config-to-remove-explosion-radius-clamp.patch @@ -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 9702ce32484954ec0aa4828315df443c1f518ec2..b0bfe3b3db03e36bdf837ed4a4a4f12ad887a5fd 100644 +index 5b54dcf2d352aa4f998d887fe2d8455b396794a2..77308b060ef41c4782ef8fa92556e41c4bc8dcb0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -211,6 +211,11 @@ public class PurpurWorldConfig { +@@ -221,6 +221,11 @@ public class PurpurWorldConfig { entitySharedRandom = getBoolean("settings.entity.shared-random", entitySharedRandom); } diff --git a/patches/server/0276-bonemealable-sugarcane-cactus-and-netherwart.patch b/patches/server/0277-bonemealable-sugarcane-cactus-and-netherwart.patch similarity index 98% rename from patches/server/0276-bonemealable-sugarcane-cactus-and-netherwart.patch rename to patches/server/0277-bonemealable-sugarcane-cactus-and-netherwart.patch index 6911c8b0a..ff664b460 100644 --- a/patches/server/0276-bonemealable-sugarcane-cactus-and-netherwart.patch +++ b/patches/server/0277-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 b0bfe3b3db03e36bdf837ed4a4a4f12ad887a5fd..3ad00e226f40685bc68fdb16712876b37a98f5d9 100644 +index 77308b060ef41c4782ef8fa92556e41c4bc8dcb0..7af01c62e227e4a82b97b14aec8194f5b7cf481f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -899,8 +899,20 @@ public class PurpurWorldConfig { +@@ -909,8 +909,20 @@ public class PurpurWorldConfig { } public boolean cactusBreaksFromSolidNeighbors = true; diff --git a/patches/server/0277-Add-PreExplodeEvents.patch b/patches/server/0278-Add-PreExplodeEvents.patch similarity index 100% rename from patches/server/0277-Add-PreExplodeEvents.patch rename to patches/server/0278-Add-PreExplodeEvents.patch diff --git a/patches/server/0278-Improve-output-of-plugins-command.patch b/patches/server/0279-Improve-output-of-plugins-command.patch similarity index 100% rename from patches/server/0278-Improve-output-of-plugins-command.patch rename to patches/server/0279-Improve-output-of-plugins-command.patch diff --git a/patches/server/0279-Add-mending-multiplier.patch b/patches/server/0280-Add-mending-multiplier.patch similarity index 93% rename from patches/server/0279-Add-mending-multiplier.patch rename to patches/server/0280-Add-mending-multiplier.patch index 7e09aacf8..3ea944ada 100644 --- a/patches/server/0279-Add-mending-multiplier.patch +++ b/patches/server/0280-Add-mending-multiplier.patch @@ -27,7 +27,7 @@ index ce608784e0e35b67dde377436aaf42c956ce0644..f5debc8ddc496cd3e2d8b253511ee5cc public int getValue() { return this.value; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3ad00e226f40685bc68fdb16712876b37a98f5d9..ea64ee3480b12e1c711e55705a2b792c0f473f32 100644 +index 7af01c62e227e4a82b97b14aec8194f5b7cf481f..7fe4cb6bea84ad24ec2f1d7fe2f21fecbb0fc348 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -119,6 +119,7 @@ public class PurpurWorldConfig { @@ -38,7 +38,7 @@ index 3ad00e226f40685bc68fdb16712876b37a98f5d9..ea64ee3480b12e1c711e55705a2b792c public boolean alwaysTameInCreative = false; public boolean boatEjectPlayersOnLand = false; public boolean boatsDoFallDamage = false; -@@ -145,6 +146,7 @@ public class PurpurWorldConfig { +@@ -147,6 +148,7 @@ public class PurpurWorldConfig { public int mobLastHurtByPlayerTime = 100; private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); diff --git a/patches/server/0280-Make-GUI-Great-Again.patch b/patches/server/0281-Make-GUI-Great-Again.patch similarity index 100% rename from patches/server/0280-Make-GUI-Great-Again.patch rename to patches/server/0281-Make-GUI-Great-Again.patch diff --git a/patches/server/0281-Stored-Bee-API.patch b/patches/server/0282-Stored-Bee-API.patch similarity index 100% rename from patches/server/0281-Stored-Bee-API.patch rename to patches/server/0282-Stored-Bee-API.patch diff --git a/patches/server/0282-Shears-can-defuse-TNT.patch b/patches/server/0283-Shears-can-defuse-TNT.patch similarity index 96% rename from patches/server/0282-Shears-can-defuse-TNT.patch rename to patches/server/0283-Shears-can-defuse-TNT.patch index cf09e3ed9..8716633da 100644 --- a/patches/server/0282-Shears-can-defuse-TNT.patch +++ b/patches/server/0283-Shears-can-defuse-TNT.patch @@ -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 ea64ee3480b12e1c711e55705a2b792c0f473f32..71d22e8966e24120dc00f79810251341fd243fc1 100644 +index 7fe4cb6bea84ad24ec2f1d7fe2f21fecbb0fc348..15e0e921e60e11d74b0a58135c81a040731f5c7e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -3267,4 +3267,11 @@ public class PurpurWorldConfig { +@@ -3277,4 +3277,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/server/0283-Explorer-Map-API.patch b/patches/server/0284-Explorer-Map-API.patch similarity index 100% rename from patches/server/0283-Explorer-Map-API.patch rename to patches/server/0284-Explorer-Map-API.patch diff --git a/patches/server/0284-Option-Ocelot-Spawn-Under-Sea-Level.patch b/patches/server/0285-Option-Ocelot-Spawn-Under-Sea-Level.patch similarity index 91% rename from patches/server/0284-Option-Ocelot-Spawn-Under-Sea-Level.patch rename to patches/server/0285-Option-Ocelot-Spawn-Under-Sea-Level.patch index cb5cab1f7..c51e83db2 100644 --- a/patches/server/0284-Option-Ocelot-Spawn-Under-Sea-Level.patch +++ b/patches/server/0285-Option-Ocelot-Spawn-Under-Sea-Level.patch @@ -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 71d22e8966e24120dc00f79810251341fd243fc1..bb965615c778f38e0de6853b4271e39af436e384 100644 +index 15e0e921e60e11d74b0a58135c81a040731f5c7e..bab93aaa84e4cd0a8c6e3a6dede84fd497d63d03 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2082,6 +2082,7 @@ public class PurpurWorldConfig { +@@ -2092,6 +2092,7 @@ public class PurpurWorldConfig { public int ocelotBreedingTicks = 6000; public boolean ocelotTakeDamageFromWater = false; public boolean ocelotAlwaysDropExp = false; @@ -29,7 +29,7 @@ index 71d22e8966e24120dc00f79810251341fd243fc1..bb965615c778f38e0de6853b4271e39a private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -2095,6 +2096,7 @@ public class PurpurWorldConfig { +@@ -2105,6 +2106,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/server/0285-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch b/patches/server/0286-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch similarity index 93% rename from patches/server/0285-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch rename to patches/server/0286-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch index 3149bf48c..f1049a992 100644 --- a/patches/server/0285-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch +++ b/patches/server/0286-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch @@ -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 bb965615c778f38e0de6853b4271e39af436e384..dc85580bd895babb6e10cefe1ab9eee3d3178959 100644 +index bab93aaa84e4cd0a8c6e3a6dede84fd497d63d03..3092afc7ed608a36edddc6a149b25742ffd38fb8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2251,6 +2251,7 @@ public class PurpurWorldConfig { +@@ -2261,6 +2261,7 @@ public class PurpurWorldConfig { public int piglinPortalSpawnModifier = 2000; public boolean piglinAlwaysDropExp = false; public double piglinHeadVisibilityPercent = 0.5D; @@ -40,7 +40,7 @@ index bb965615c778f38e0de6853b4271e39af436e384..dc85580bd895babb6e10cefe1ab9eee3 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2266,6 +2267,7 @@ public class PurpurWorldConfig { +@@ -2276,6 +2277,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/server/0286-Add-option-for-always-showing-item-in-player-death-m.patch b/patches/server/0287-Add-option-for-always-showing-item-in-player-death-m.patch similarity index 97% rename from patches/server/0286-Add-option-for-always-showing-item-in-player-death-m.patch rename to patches/server/0287-Add-option-for-always-showing-item-in-player-death-m.patch index b2db4abbe..84ea3ef77 100644 --- a/patches/server/0286-Add-option-for-always-showing-item-in-player-death-m.patch +++ b/patches/server/0287-Add-option-for-always-showing-item-in-player-death-m.patch @@ -31,7 +31,7 @@ index 812091bf6efc067b21b9723b8241360d4b4c79e7..25e614be19b2b29b36af136b823f27f8 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 7f57982ffdd3e571937e9f4a2fa4ac0ea88373f8..d7df39dc0937f37746b17bbad810478d11736f4b 100644 +index e7bce4121f7bc2fe0acd8860a73c58dfed73330b..6e0e871153e0ec85fd40ddf0581b6ed2932b9f99 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 { diff --git a/patches/server/0287-place-end-crystal-on-any-block.patch b/patches/server/0288-place-end-crystal-on-any-block.patch similarity index 91% rename from patches/server/0287-place-end-crystal-on-any-block.patch rename to patches/server/0288-place-end-crystal-on-any-block.patch index 4f365c3c2..fb2f41d56 100644 --- a/patches/server/0287-place-end-crystal-on-any-block.patch +++ b/patches/server/0288-place-end-crystal-on-any-block.patch @@ -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 dc85580bd895babb6e10cefe1ab9eee3d3178959..5d609c0d67d59c35d9c5ee96dcf2ff0c7afe85a8 100644 +index 3092afc7ed608a36edddc6a149b25742ffd38fb8..fd596f0e27ecf722cdd90797f4c3ed5b8b4e10e3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -968,6 +968,7 @@ public class PurpurWorldConfig { +@@ -978,6 +978,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 dc85580bd895babb6e10cefe1ab9eee3d3178959..5d609c0d67d59c35d9c5ee96dcf2ff0c private void endCrystalSettings() { if (PurpurConfig.version < 31) { if ("DESTROY".equals(getString("blocks.end-crystal.baseless.explosion-effect", baselessEndCrystalExplosionEffect.name()))) { -@@ -996,6 +997,7 @@ public class PurpurWorldConfig { +@@ -1006,6 +1007,7 @@ public class PurpurWorldConfig { basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; } endCrystalCramming = getInt("blocks.end-crystal.cramming-amount", endCrystalCramming); diff --git a/patches/server/0288-Add-option-to-disable-the-copper-oxidation-proximity.patch b/patches/server/0289-Add-option-to-disable-the-copper-oxidation-proximity.patch similarity index 92% rename from patches/server/0288-Add-option-to-disable-the-copper-oxidation-proximity.patch rename to patches/server/0289-Add-option-to-disable-the-copper-oxidation-proximity.patch index 107ab9938..ec825696c 100644 --- a/patches/server/0288-Add-option-to-disable-the-copper-oxidation-proximity.patch +++ b/patches/server/0289-Add-option-to-disable-the-copper-oxidation-proximity.patch @@ -18,10 +18,10 @@ 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 5d609c0d67d59c35d9c5ee96dcf2ff0c7afe85a8..7ce389e6100b4e8a14ca712f4815350e317dc3f0 100644 +index fd596f0e27ecf722cdd90797f4c3ed5b8b4e10e3..3bf9d778f826f30ed7ccdfc81336f21fa3307fcd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -144,6 +144,7 @@ public class PurpurWorldConfig { +@@ -146,6 +146,7 @@ public class PurpurWorldConfig { public boolean rainStopsAfterSleep = true; public boolean thunderStopsAfterSleep = true; public int mobLastHurtByPlayerTime = 100; @@ -29,7 +29,7 @@ index 5d609c0d67d59c35d9c5ee96dcf2ff0c7afe85a8..7ce389e6100b4e8a14ca712f4815350e private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); mendingMultiplier = getDouble("gameplay-mechanics.mending-multiplier", mendingMultiplier); -@@ -171,6 +172,7 @@ public class PurpurWorldConfig { +@@ -181,6 +182,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/server/0289-register-minecraft-debug-commands.patch b/patches/server/0290-register-minecraft-debug-commands.patch similarity index 96% rename from patches/server/0289-register-minecraft-debug-commands.patch rename to patches/server/0290-register-minecraft-debug-commands.patch index 1e5ed3ea9..db1601242 100644 --- a/patches/server/0289-register-minecraft-debug-commands.patch +++ b/patches/server/0290-register-minecraft-debug-commands.patch @@ -32,7 +32,7 @@ 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 d7df39dc0937f37746b17bbad810478d11736f4b..046304d9149472eaffb3ff5f4fa22a230969de86 100644 +index 6e0e871153e0ec85fd40ddf0581b6ed2932b9f99..f49108ed94f7787347c5e0a721646083d6dffafc 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 { diff --git a/patches/server/0290-Configurable-villager-search-radius.patch b/patches/server/0291-Configurable-villager-search-radius.patch similarity index 95% rename from patches/server/0290-Configurable-villager-search-radius.patch rename to patches/server/0291-Configurable-villager-search-radius.patch index 3d8da0513..d7bc61eb5 100644 --- a/patches/server/0290-Configurable-villager-search-radius.patch +++ b/patches/server/0291-Configurable-villager-search-radius.patch @@ -31,10 +31,10 @@ index 92731b6b593289e9f583c9b705b219e81fcd8e73..9104d7010bda6f9f73b478c11490ef9c // 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 7ce389e6100b4e8a14ca712f4815350e317dc3f0..8704cc621937beda692bf484cf5ef11b2d7d7e4c 100644 +index 3bf9d778f826f30ed7ccdfc81336f21fa3307fcd..7a9a5985b1429c25467db732678d0658aafcfafa 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2881,6 +2881,8 @@ public class PurpurWorldConfig { +@@ -2891,6 +2891,8 @@ public class PurpurWorldConfig { public boolean villagerDisplayTradeItem = true; public int villagerSpawnIronGolemRadius = 0; public int villagerSpawnIronGolemLimit = 0; @@ -43,7 +43,7 @@ index 7ce389e6100b4e8a14ca712f4815350e317dc3f0..8704cc621937beda692bf484cf5ef11b private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2917,6 +2919,8 @@ public class PurpurWorldConfig { +@@ -2927,6 +2929,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);