From 526a0beb38c5ae9f68cfb633c7e11490632904a6 Mon Sep 17 00:00:00 2001 From: BillyGalbreath Date: Sat, 19 Jun 2021 15:58:07 -0500 Subject: [PATCH] more progress --- ...mes-from-item-forms-of-entities-to-e.patch | 186 ------------------ ...-when-using-a-Name-Tag-on-an-Armor-S.patch | 46 ----- ...sting-and-weeping-vines-growth-rates.patch | 113 ----------- patches/server/0009-AFK-API.patch | 4 +- .../0017-Player-invulnerabilities.patch | 22 ++- ...19-Configurable-villager-brain-ticks.patch | 6 +- patches/server/0021-Silk-touch-spawners.patch | 4 +- ...772-Fix-Add-turtle-egg-block-options.patch | 6 +- patches/server/0026-Giants-AI-settings.patch | 6 +- .../0027-Zombie-horse-naturally-spawn.patch | 8 +- ...0028-Charged-creeper-naturally-spawn.patch | 6 +- ...bit-naturally-spawn-toast-and-killer.patch | 6 +- .../server/0032-Tulips-change-fox-type.patch | 6 +- .../server/0033-Breedable-Polar-Bears.patch | 6 +- .../server/0034-Chickens-can-retaliate.patch | 6 +- .../server/0036-Cat-spawning-options.patch | 6 +- patches/server/0038-Cows-eat-mushrooms.patch | 6 +- .../server/0040-Pigs-give-saddle-back.patch | 6 +- ...41-Snowman-drop-and-put-back-pumpkin.patch | 6 +- ...42-Ender-dragon-always-drop-full-exp.patch | 6 +- .../0043-Signs-editable-on-right-click.patch | 4 +- .../server/0044-Signs-allow-color-codes.patch | 4 +- ...moisten-from-water-directly-under-it.patch | 4 +- ...able-loot-drops-on-death-by-cramming.patch | 12 +- ...ption-to-toggle-milk-curing-bad-omen.patch | 6 +- ...-skeleton-takes-wither-damage-option.patch | 6 +- ...low-loyalty-on-tridents-to-work-in-t.patch | 6 +- ...derman-and-creeper-griefing-controls.patch | 10 +- ...up-loot-bypass-mob-griefing-gamerule.patch | 4 +- ...ing-can-bypass-mob-griefing-gamerule.patch | 6 +- ...0060-Villagers-follow-emerald-blocks.patch | 10 +- .../0061-Allow-leashing-villagers.patch | 10 +- ...urable-search-radius-for-villagers-t.patch | 6 +- .../server/0063-Implement-infinite-lava.patch | 4 +- ...64-Make-lava-flow-speed-configurable.patch | 4 +- ...Add-player-death-exp-control-options.patch | 26 +-- ...urable-void-damage-height-and-damage.patch | 6 +- ...ispenser-curse-of-binding-protection.patch | 6 +- ...n-for-boats-to-eject-players-on-land.patch | 8 +- ...g-mends-most-damages-equipment-first.patch | 8 +- .../0072-Implement-elytra-settings.patch | 6 +- .../server/0073-Item-entity-immunities.patch | 4 +- .../0075-Configurable-jockey-options.patch | 20 +- ...ed-to-crystals-and-crystals-shoot-ph.patch | 6 +- .../0077-Add-phantom-spawning-options.patch | 6 +- ...0078-Implement-bed-explosion-options.patch | 6 +- ...ent-respawn-anchor-explosion-options.patch | 4 +- patches/server/0082-Entity-lifespan.patch | 4 +- ...leport-to-spawn-if-outside-world-bor.patch | 22 ++- patches/server/0084-Squid-EAR-immunity.patch | 6 +- .../server/0087-Phantoms-burn-in-light.patch | 6 +- .../0088-Configurable-villager-breeding.patch | 6 +- .../0089-Redstone-deactivates-spawners.patch | 12 +- .../0090-Totems-work-in-inventory.patch | 22 ++- ...1-Add-vindicator-johnny-spawn-chance.patch | 6 +- .../0093-Dispensers-place-anvils-option.patch | 4 +- patches/server/0094-Allow-anvil-colors.patch | 6 +- .../0095-Add-no-random-tick-block-list.patch | 14 +- ...o-disable-dolphin-treasure-searching.patch | 6 +- ...Stop-squids-floating-on-top-of-water.patch | 6 +- ...tities-can-use-portals-configuration.patch | 6 +- ...stomizable-wither-health-and-healing.patch | 22 +-- ...ggling-special-MobSpawners-per-world.patch | 14 +- .../server/0105-Raid-cooldown-setting.patch | 8 +- ...e-config-options-per-projectile-type.patch | 12 +- ...sable-zombie-aggressiveness-towards-.patch | 6 +- ...tent-TileEntity-Lore-and-DisplayName.patch | 6 +- patches/server/0110-Flying-squids-Oh-my.patch | 6 +- .../server/0111-Infinity-bow-settings.patch | 12 +- patches/server/0112-Stonecutter-damage.patch | 10 +- .../0113-Configurable-daylight-cycle.patch | 14 +- .../server/0115-Infinite-fuel-furnace.patch | 4 +- ...re-add-farmland-mechanics-from-Alpha.patch | 4 +- ...justable-breeding-cooldown-to-config.patch | 8 +- ...e-entity-breeding-times-configurable.patch | 90 ++++----- ...mes-from-item-forms-of-entities-to-e.patch | 174 ++++++++++++++++ ...-when-using-a-Name-Tag-on-an-Armor-S.patch | 34 ++++ ...sting-and-weeping-vines-growth-rates.patch | 89 +++++++++ 78 files changed, 628 insertions(+), 674 deletions(-) delete mode 100644 patches/server-unmapped/0124-Apply-display-names-from-item-forms-of-entities-to-e.patch delete mode 100644 patches/server-unmapped/0125-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch delete mode 100644 patches/server-unmapped/0126-Add-twisting-and-weeping-vines-growth-rates.patch create mode 100644 patches/server/0121-Apply-display-names-from-item-forms-of-entities-to-e.patch create mode 100644 patches/server/0122-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch create mode 100644 patches/server/0123-Add-twisting-and-weeping-vines-growth-rates.patch diff --git a/patches/server-unmapped/0124-Apply-display-names-from-item-forms-of-entities-to-e.patch b/patches/server-unmapped/0124-Apply-display-names-from-item-forms-of-entities-to-e.patch deleted file mode 100644 index 23d5dd30c..000000000 --- a/patches/server-unmapped/0124-Apply-display-names-from-item-forms-of-entities-to-e.patch +++ /dev/null @@ -1,186 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Jason Penilla <11360596+jpenilla@users.noreply.github.com> -Date: Tue, 17 Nov 2020 03:23:48 -0800 -Subject: [PATCH] Apply display names from item forms of entities to entities - and vice versa - - -diff --git a/src/main/java/net/minecraft/world/entity/decoration/EntityArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/EntityArmorStand.java -index 89d3734489b65245e815376edf4e2d9baea1563a..43dc0925887e2e9e86445cccff57be7994ca0d58 100644 ---- a/src/main/java/net/minecraft/world/entity/decoration/EntityArmorStand.java -+++ b/src/main/java/net/minecraft/world/entity/decoration/EntityArmorStand.java -@@ -588,7 +588,13 @@ public class EntityArmorStand extends EntityLiving { - } - - private void f(DamageSource damagesource) { -- drops.add(org.bukkit.craftbukkit.inventory.CraftItemStack.asBukkitCopy(new ItemStack(Items.ARMOR_STAND))); // CraftBukkit - add to drops -+ // Purpur start -+ final ItemStack armorStand = new ItemStack(Items.ARMOR_STAND); -+ if (this.world.purpurConfig.persistentDroppableEntityDisplayNames && this.hasCustomName()) { -+ armorStand.setName(this.getCustomName()); -+ } -+ drops.add(org.bukkit.craftbukkit.inventory.CraftItemStack.asBukkitCopy(armorStand)); // CraftBukkit - add to drops -+ // Purpur end - this.g(damagesource); - } - -diff --git a/src/main/java/net/minecraft/world/entity/decoration/EntityItemFrame.java b/src/main/java/net/minecraft/world/entity/decoration/EntityItemFrame.java -index 43152a6c70c9433d627a58051101530ddd693307..eb07db442c5a0da73249f4a02be7dacae0ff0e45 100644 ---- a/src/main/java/net/minecraft/world/entity/decoration/EntityItemFrame.java -+++ b/src/main/java/net/minecraft/world/entity/decoration/EntityItemFrame.java -@@ -229,7 +229,13 @@ public class EntityItemFrame extends EntityHanging { - } - - if (flag) { -- this.a((IMaterial) Items.ITEM_FRAME); -+ // Purpur start -+ final ItemStack itemFrame = new ItemStack(Items.ITEM_FRAME); -+ if (this.world.purpurConfig.persistentDroppableEntityDisplayNames && this.hasCustomName()) { -+ itemFrame.setName(this.getCustomName()); -+ } -+ this.dropItem(itemFrame); -+ // Purpur end - } - - if (!itemstack.isEmpty()) { -diff --git a/src/main/java/net/minecraft/world/entity/decoration/EntityPainting.java b/src/main/java/net/minecraft/world/entity/decoration/EntityPainting.java -index 3de0f21648ca60bdfcbc078bca896d51bf84e207..7517e861301e0c329c70aa6f2bf5aa40114b6589 100644 ---- a/src/main/java/net/minecraft/world/entity/decoration/EntityPainting.java -+++ b/src/main/java/net/minecraft/world/entity/decoration/EntityPainting.java -@@ -108,7 +108,13 @@ public class EntityPainting extends EntityHanging { - } - } - -- this.a((IMaterial) Items.PAINTING); -+ // Purpur start -+ final ItemStack painting = new ItemStack(Items.PAINTING); -+ if (this.world.purpurConfig.persistentDroppableEntityDisplayNames && this.hasCustomName()) { -+ painting.setName(this.getCustomName()); -+ } -+ this.dropItem(painting); -+ // Purpur end - } - } - -diff --git a/src/main/java/net/minecraft/world/entity/vehicle/EntityBoat.java b/src/main/java/net/minecraft/world/entity/vehicle/EntityBoat.java -index e5cda8c040c93639211dacbf5b0c7cd6a9df9e6d..9cd1a2a2a8db1d8daf7c712d6bd03fad1b048485 100644 ---- a/src/main/java/net/minecraft/world/entity/vehicle/EntityBoat.java -+++ b/src/main/java/net/minecraft/world/entity/vehicle/EntityBoat.java -@@ -201,7 +201,13 @@ public class EntityBoat extends Entity { - } - // CraftBukkit end - if (!flag && this.world.getGameRules().getBoolean(GameRules.DO_ENTITY_DROPS)) { -- this.a((IMaterial) this.g()); -+ // Purpur start -+ final ItemStack boat = new ItemStack(this.getBoatItem()); -+ if (this.world.purpurConfig.persistentDroppableEntityDisplayNames && this.hasCustomName()) { -+ boat.setName(this.getCustomName()); -+ } -+ this.dropItem(boat); -+ // Purpur end - } - - this.die(); -diff --git a/src/main/java/net/minecraft/world/item/ItemArmorStand.java b/src/main/java/net/minecraft/world/item/ItemArmorStand.java -index cd46df5485ebfd597ea72360a27872d46174ee19..245d3fe09feb9dc27b097642d40664a9f2377581 100644 ---- a/src/main/java/net/minecraft/world/item/ItemArmorStand.java -+++ b/src/main/java/net/minecraft/world/item/ItemArmorStand.java -@@ -63,6 +63,14 @@ public class ItemArmorStand extends Item { - return EnumInteractionResult.FAIL; - } - // CraftBukkit end -+ // Purpur start -+ if (itemactioncontext.getWorld().purpurConfig.persistentDroppableEntityDisplayNames && itemactioncontext.getItemStack().hasName()) { -+ entityarmorstand.setCustomName(itemactioncontext.getItemStack().getName()); -+ if (itemactioncontext.getWorld().purpurConfig.armorstandSetNameVisible) { -+ entityarmorstand.setCustomNameVisible(true); -+ } -+ } -+ // Purpur end - worldserver.addAllEntities(entityarmorstand); // Paper - moved down - world.playSound((EntityHuman) null, entityarmorstand.locX(), entityarmorstand.locY(), entityarmorstand.locZ(), SoundEffects.ENTITY_ARMOR_STAND_PLACE, SoundCategory.BLOCKS, 0.75F, 0.8F); - } -diff --git a/src/main/java/net/minecraft/world/item/ItemBoat.java b/src/main/java/net/minecraft/world/item/ItemBoat.java -index 1d812b3e27f87213afc3e441eb20ca984458ce2a..636a8bc76d436fc770b4e05a93f1991210b64230 100644 ---- a/src/main/java/net/minecraft/world/item/ItemBoat.java -+++ b/src/main/java/net/minecraft/world/item/ItemBoat.java -@@ -65,6 +65,11 @@ public class ItemBoat extends Item { - - entityboat.setType(this.b); - entityboat.yaw = entityhuman.yaw; -+ // Purpur start -+ if (world.purpurConfig.persistentDroppableEntityDisplayNames && itemstack.hasName()) { -+ entityboat.setCustomName(itemstack.getName()); -+ } -+ // Purpur end - if (!world.getCubes(entityboat, entityboat.getBoundingBox().g(-0.1D))) { - return InteractionResultWrapper.fail(itemstack); - } else { -diff --git a/src/main/java/net/minecraft/world/item/ItemHanging.java b/src/main/java/net/minecraft/world/item/ItemHanging.java -index bbd3bb2d12e500d15485598783d39b0cb63a6d83..8e4c3304779cfccf7d45d4843f9c15bffce8ba07 100644 ---- a/src/main/java/net/minecraft/world/item/ItemHanging.java -+++ b/src/main/java/net/minecraft/world/item/ItemHanging.java -@@ -39,7 +39,7 @@ public class ItemHanging extends Item { - return EnumInteractionResult.FAIL; - } else { - World world = itemactioncontext.getWorld(); -- Object object; -+ Entity object; // Purpur - - if (this.a == EntityTypes.PAINTING) { - object = new EntityPainting(world, blockposition1, enumdirection); -@@ -55,6 +55,11 @@ public class ItemHanging extends Item { - - if (nbttagcompound != null) { - EntityTypes.a(world, entityhuman, (Entity) object, nbttagcompound); -+ // Purpur start -+ if (itemactioncontext.getWorld().purpurConfig.persistentDroppableEntityDisplayNames && itemactioncontext.getItemStack().hasName()) { -+ object.setCustomName(itemactioncontext.getItemStack().getName()); -+ } -+ // Purpur end - } - - if (((EntityHanging) object).survives()) { -diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 2aa761656ce75f78732c502fd4ce65034b6c2919..a4c41caae425e054db3f40a9abc41f45ccd20730 100644 ---- a/src/main/java/net/minecraft/world/item/ItemStack.java -+++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -788,6 +788,7 @@ public final class ItemStack { - return this.getItem().h(this); - } - -+ public ItemStack setName(@Nullable IChatBaseComponent component) { return this.a(component); } // Purpur - OBFHELPER - public ItemStack a(@Nullable IChatBaseComponent ichatbasecomponent) { - NBTTagCompound nbttagcompound = this.a("display"); - -diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index bd37234624a720c1077aabf0123de61a0d4e05cb..b650293ff3315760e29307113e29fb2731af472b 100644 ---- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -83,8 +83,10 @@ public class PurpurWorldConfig { - return PurpurConfig.config.getString("world-settings." + worldName + "." + path, PurpurConfig.config.getString("world-settings.default." + path)); - } - -+ public boolean armorstandSetNameVisible = false; - public float armorstandStepHeight = 0.0F; - private void armorstandSettings() { -+ armorstandSetNameVisible = getBoolean("gameplay-mechanics.armorstand.set-name-visible-when-placing-with-custom-name", armorstandSetNameVisible); - armorstandStepHeight = (float) getDouble("gameplay-mechanics.armorstand.step-height", armorstandStepHeight); - } - -@@ -261,6 +263,7 @@ public class PurpurWorldConfig { - public boolean entitiesCanUsePortals = true; - public boolean milkCuresBadOmen = true; - public boolean persistentTileEntityDisplayNames = false; -+ public boolean persistentDroppableEntityDisplayNames = false; - public double tridentLoyaltyVoidReturnHeight = 0.0D; - public double voidDamageHeight = -64.0D; - public double voidDamageDealt = 4.0D; -@@ -274,6 +277,7 @@ public class PurpurWorldConfig { - entitiesCanUsePortals = getBoolean("gameplay-mechanics.entities-can-use-portals", entitiesCanUsePortals); - milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); - persistentTileEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-tileentity-display-names-and-lore", persistentTileEntityDisplayNames); -+ persistentDroppableEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-droppable-entity-display-names", persistentDroppableEntityDisplayNames); - tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight); - voidDamageHeight = getDouble("gameplay-mechanics.void-damage-height", voidDamageHeight); - voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); diff --git a/patches/server-unmapped/0125-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch b/patches/server-unmapped/0125-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch deleted file mode 100644 index 42dc254fd..000000000 --- a/patches/server-unmapped/0125-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch +++ /dev/null @@ -1,46 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Jason Penilla <11360596+jpenilla@users.noreply.github.com> -Date: Tue, 17 Nov 2020 13:12:09 -0800 -Subject: [PATCH] Set name visible when using a Name Tag on an Armor Stand - - -diff --git a/src/main/java/net/minecraft/world/item/ItemNameTag.java b/src/main/java/net/minecraft/world/item/ItemNameTag.java -index b9b2b27e534ba87a1aae3c521f393a066a18a199..4f4e9ebb9af4970fe920a540d40dbc56682efd57 100644 ---- a/src/main/java/net/minecraft/world/item/ItemNameTag.java -+++ b/src/main/java/net/minecraft/world/item/ItemNameTag.java -@@ -5,6 +5,7 @@ import net.minecraft.world.EnumHand; - import net.minecraft.world.EnumInteractionResult; - import net.minecraft.world.entity.EntityInsentient; - import net.minecraft.world.entity.EntityLiving; -+import net.minecraft.world.entity.decoration.EntityArmorStand; - import net.minecraft.world.entity.player.EntityHuman; - - // Paper start -@@ -27,6 +28,11 @@ public class ItemNameTag extends Item { - if (!event.callEvent()) return EnumInteractionResult.PASS; - EntityLiving newEntityLiving = ((org.bukkit.craftbukkit.entity.CraftLivingEntity) event.getEntity()).getHandle(); - newEntityLiving.setCustomName(event.getName() != null ? PaperAdventure.asVanilla(event.getName()) : null); -+ // Purpur start -+ if (entityhuman.world.purpurConfig.armorstandFixNametags && entityliving instanceof EntityArmorStand) { -+ entityliving.setCustomNameVisible(true); -+ } -+ // Purpur end - if (event.isPersistent() && newEntityLiving instanceof EntityInsentient) { - ((EntityInsentient) newEntityLiving).setPersistent(); - } -diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index b650293ff3315760e29307113e29fb2731af472b..dc1418f8f324eae24af3e993c6c720ff73702c92 100644 ---- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -84,9 +84,11 @@ public class PurpurWorldConfig { - } - - public boolean armorstandSetNameVisible = false; -+ public boolean armorstandFixNametags = false; - public float armorstandStepHeight = 0.0F; - private void armorstandSettings() { - armorstandSetNameVisible = getBoolean("gameplay-mechanics.armorstand.set-name-visible-when-placing-with-custom-name", armorstandSetNameVisible); -+ armorstandFixNametags = getBoolean("gameplay-mechanics.armorstand.fix-nametags", armorstandFixNametags); - armorstandStepHeight = (float) getDouble("gameplay-mechanics.armorstand.step-height", armorstandStepHeight); - } - diff --git a/patches/server-unmapped/0126-Add-twisting-and-weeping-vines-growth-rates.patch b/patches/server-unmapped/0126-Add-twisting-and-weeping-vines-growth-rates.patch deleted file mode 100644 index def89357c..000000000 --- a/patches/server-unmapped/0126-Add-twisting-and-weeping-vines-growth-rates.patch +++ /dev/null @@ -1,113 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: BillyGalbreath -Date: Sun, 22 Nov 2020 06:02:32 -0600 -Subject: [PATCH] Add twisting and weeping vines growth rates - - -diff --git a/src/main/java/net/minecraft/world/level/block/BlockGrowingTop.java b/src/main/java/net/minecraft/world/level/block/BlockGrowingTop.java -index 84bd1fa9edb59b8515685a47783ed5e6abe7333f..546c7877647bac41753a600bd25c630a0510be56 100644 ---- a/src/main/java/net/minecraft/world/level/block/BlockGrowingTop.java -+++ b/src/main/java/net/minecraft/world/level/block/BlockGrowingTop.java -@@ -38,9 +38,11 @@ public abstract class BlockGrowingTop extends BlockGrowingAbstract implements IB - return (Integer) iblockdata.get(BlockGrowingTop.d) < 25; - } - -+ public abstract double getGrowthModifier(WorldServer worldserver); // Purpur -+ - @Override - public void tick(IBlockData iblockdata, WorldServer worldserver, BlockPosition blockposition, Random random) { -- if ((Integer) iblockdata.get(BlockGrowingTop.d) < 25 && random.nextDouble() < (100.0D / worldserver.spigotConfig.kelpModifier) * this.e) { // Spigot -+ if ((Integer) iblockdata.get(BlockGrowingTop.d) < 25 && random.nextDouble() < (100.0D / getGrowthModifier(worldserver)) * this.e) { // Spigot // Purpur - BlockPosition blockposition1 = blockposition.shift(this.a); - - if (this.h(worldserver.getType(blockposition1))) { -diff --git a/src/main/java/net/minecraft/world/level/block/BlockKelp.java b/src/main/java/net/minecraft/world/level/block/BlockKelp.java -index 424b9b3c1263910eb6113f19efc14607dd2bf638..27f1cbe8786d7c37d62193a21baf0a2bdc6f0294 100644 ---- a/src/main/java/net/minecraft/world/level/block/BlockKelp.java -+++ b/src/main/java/net/minecraft/world/level/block/BlockKelp.java -@@ -4,6 +4,7 @@ import java.util.Random; - import javax.annotation.Nullable; - import net.minecraft.core.BlockPosition; - import net.minecraft.core.EnumDirection; -+import net.minecraft.server.level.WorldServer; - import net.minecraft.tags.Tag; - import net.minecraft.tags.TagsFluid; - import net.minecraft.world.item.context.BlockActionContext; -@@ -66,4 +67,10 @@ public class BlockKelp extends BlockGrowingTop implements IFluidContainer { - public Fluid d(IBlockData iblockdata) { - return FluidTypes.WATER.a(false); - } -+ -+ // Purpur start -+ public double getGrowthModifier(WorldServer worldserver) { -+ return worldserver.spigotConfig.kelpModifier; -+ } -+ // Purpur end - } -diff --git a/src/main/java/net/minecraft/world/level/block/BlockTwistingVines.java b/src/main/java/net/minecraft/world/level/block/BlockTwistingVines.java -index 2cfa96f144391e664207ac8e8bdd3f11bfed4dff..3a8d08a1ee8f066cea36e6acff492e5af62993c5 100644 ---- a/src/main/java/net/minecraft/world/level/block/BlockTwistingVines.java -+++ b/src/main/java/net/minecraft/world/level/block/BlockTwistingVines.java -@@ -2,6 +2,7 @@ package net.minecraft.world.level.block; - - import java.util.Random; - import net.minecraft.core.EnumDirection; -+import net.minecraft.server.level.WorldServer; - import net.minecraft.world.level.block.state.BlockBase; - import net.minecraft.world.level.block.state.IBlockData; - import net.minecraft.world.phys.shapes.VoxelShape; -@@ -28,4 +29,10 @@ public class BlockTwistingVines extends BlockGrowingTop { - protected boolean h(IBlockData iblockdata) { - return BlockNetherVinesUtil.a(iblockdata); - } -+ -+ // Purpur start -+ public double getGrowthModifier(WorldServer worldserver) { -+ return worldserver.purpurConfig.twistingVinesGrowthModifier; -+ } -+ // Purpur end - } -diff --git a/src/main/java/net/minecraft/world/level/block/BlockWeepingVines.java b/src/main/java/net/minecraft/world/level/block/BlockWeepingVines.java -index 2552631084926c2fad40b3f21ae479c0e1cfdb77..198bd8857571872ed3f7437529c330dceeb825db 100644 ---- a/src/main/java/net/minecraft/world/level/block/BlockWeepingVines.java -+++ b/src/main/java/net/minecraft/world/level/block/BlockWeepingVines.java -@@ -2,6 +2,7 @@ package net.minecraft.world.level.block; - - import java.util.Random; - import net.minecraft.core.EnumDirection; -+import net.minecraft.server.level.WorldServer; - import net.minecraft.world.level.block.state.BlockBase; - import net.minecraft.world.level.block.state.IBlockData; - import net.minecraft.world.phys.shapes.VoxelShape; -@@ -28,4 +29,10 @@ public class BlockWeepingVines extends BlockGrowingTop { - protected boolean h(IBlockData iblockdata) { - return BlockNetherVinesUtil.a(iblockdata); - } -+ -+ // Purpur start -+ public double getGrowthModifier(WorldServer worldserver) { -+ return worldserver.purpurConfig.weepingVinesGrowthModifier; -+ } -+ // Purpur end - } -diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index dc1418f8f324eae24af3e993c6c720ff73702c92..17bbe2ceea016bcb00dc5542bea47e083e723ea5 100644 ---- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -477,6 +477,16 @@ public class PurpurWorldConfig { - turtleEggsBreakFromMinecarts = getBoolean("blocks.turtle_egg.break-from-minecarts", turtleEggsBreakFromMinecarts); - } - -+ public double twistingVinesGrowthModifier = 0.10D; -+ private void twistingVinesSettings() { -+ twistingVinesGrowthModifier = getDouble("blocks.twisting_vines.growth-modifier", twistingVinesGrowthModifier); -+ } -+ -+ public double weepingVinesGrowthModifier = 0.10D; -+ private void weepingVinesSettings() { -+ weepingVinesGrowthModifier = getDouble("blocks.weeping_vines.growth-modifier", weepingVinesGrowthModifier); -+ } -+ - public boolean babiesAreRidable = true; - public boolean untamedTamablesAreRidable = true; - public boolean useNightVisionWhenRiding = false; diff --git a/patches/server/0009-AFK-API.patch b/patches/server/0009-AFK-API.patch index 717681dbc..b7446f02f 100644 --- a/patches/server/0009-AFK-API.patch +++ b/patches/server/0009-AFK-API.patch @@ -192,7 +192,7 @@ index 7bb30fba98b5b217df72e6df5b2dc4e6082d1a6a..5365a4a047c759f36177716237c2bb98 public static String timingsUrl = "https://timings.pl3x.net"; diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index c4fb8a14bf11df94acc7806f458e976c4e30e7c4..f2c6f2984bb4009b6dca36d041f1dd1436660de7 100644 +index c4fb8a14bf11df94acc7806f458e976c4e30e7c4..0a9024e766ed12b321008b3b19ce92d2f5fdfcab 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -60,6 +60,17 @@ public class PurpurWorldConfig { @@ -203,7 +203,7 @@ index c4fb8a14bf11df94acc7806f458e976c4e30e7c4..f2c6f2984bb4009b6dca36d041f1dd14 + public boolean idleTimeoutTickNearbyEntities = true; + public boolean idleTimeoutCountAsSleeping = false; + public boolean idleTimeoutUpdateTabList = false; -+ private void playerIdleTimeoutSettings() { ++ private void playerSettings() { + idleTimeoutKick = getBoolean("gameplay-mechanics.player.idle-timeout.kick-if-idle", idleTimeoutKick); + idleTimeoutTickNearbyEntities = getBoolean("gameplay-mechanics.player.idle-timeout.tick-nearby-entities", idleTimeoutTickNearbyEntities); + idleTimeoutCountAsSleeping = getBoolean("gameplay-mechanics.player.idle-timeout.count-as-sleeping", idleTimeoutCountAsSleeping); diff --git a/patches/server/0017-Player-invulnerabilities.patch b/patches/server/0017-Player-invulnerabilities.patch index 643e690fc..f9b659542 100644 --- a/patches/server/0017-Player-invulnerabilities.patch +++ b/patches/server/0017-Player-invulnerabilities.patch @@ -90,23 +90,25 @@ index d76d8d8db7921d16f87dd162ccd115e351cde106..fb29b0cb962db93489ff4268c72e7c67 return entityplayer1; } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index f2c6f2984bb4009b6dca36d041f1dd1436660de7..cd6c1251222e8ed377f775248ba874ed9941bfba 100644 +index 0a9024e766ed12b321008b3b19ce92d2f5fdfcab..52d30f1ece8b48bba953b11013b7aa10f4891991 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -71,6 +71,13 @@ public class PurpurWorldConfig { - idleTimeoutUpdateTabList = getBoolean("gameplay-mechanics.player.idle-timeout.update-tab-list", idleTimeoutUpdateTabList); - } - +@@ -64,11 +64,15 @@ public class PurpurWorldConfig { + public boolean idleTimeoutTickNearbyEntities = true; + public boolean idleTimeoutCountAsSleeping = false; + public boolean idleTimeoutUpdateTabList = false; + public int playerSpawnInvulnerableTicks = 60; + public boolean playerInvulnerableWhileAcceptingResourcePack = false; -+ private void playerInvulnerabilities() { + private void playerSettings() { + idleTimeoutKick = getBoolean("gameplay-mechanics.player.idle-timeout.kick-if-idle", idleTimeoutKick); + idleTimeoutTickNearbyEntities = getBoolean("gameplay-mechanics.player.idle-timeout.tick-nearby-entities", idleTimeoutTickNearbyEntities); + idleTimeoutCountAsSleeping = getBoolean("gameplay-mechanics.player.idle-timeout.count-as-sleeping", idleTimeoutCountAsSleeping); + idleTimeoutUpdateTabList = getBoolean("gameplay-mechanics.player.idle-timeout.update-tab-list", idleTimeoutUpdateTabList); + playerSpawnInvulnerableTicks = getInt("gameplay-mechanics.player.spawn-invulnerable-ticks", playerSpawnInvulnerableTicks); + playerInvulnerableWhileAcceptingResourcePack = getBoolean("gameplay-mechanics.player.invulnerable-while-accepting-resource-pack", playerInvulnerableWhileAcceptingResourcePack); -+ } -+ + } + public boolean babiesAreRidable = true; - public boolean untamedTamablesAreRidable = true; - public boolean useNightVisionWhenRiding = false; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java index 38b7bc0399be51eec4c00e5ce1240d7468878aea..676d98f183d798f1ea894cd78539f9034edb3659 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java diff --git a/patches/server/0019-Configurable-villager-brain-ticks.patch b/patches/server/0019-Configurable-villager-brain-ticks.patch index 8ce7b1d2a..e90090175 100644 --- a/patches/server/0019-Configurable-villager-brain-ticks.patch +++ b/patches/server/0019-Configurable-villager-brain-ticks.patch @@ -36,10 +36,10 @@ index 07686c678cd47defd9e0b742a71fd13e83142870..bd6a707962ac4d3961e1ce74570909e2 this.level.getProfiler().pop(); if (this.assignProfessionWhenSpawned) { diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index cd6c1251222e8ed377f775248ba874ed9941bfba..39891436be088064c3096999763641cc722d9bac 100644 +index 52d30f1ece8b48bba953b11013b7aa10f4891991..eed56c24c0c5bceef42addaa7e1cc17662fd1c49 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -1039,6 +1039,8 @@ public class PurpurWorldConfig { +@@ -1036,6 +1036,8 @@ public class PurpurWorldConfig { public boolean villagerRidable = false; public boolean villagerRidableInWater = false; public double villagerMaxHealth = 20.0D; @@ -48,7 +48,7 @@ index cd6c1251222e8ed377f775248ba874ed9941bfba..39891436be088064c3096999763641cc private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1048,6 +1050,8 @@ public class PurpurWorldConfig { +@@ -1045,6 +1047,8 @@ public class PurpurWorldConfig { set("mobs.villager.attributes.max_health", oldValue); } villagerMaxHealth = getDouble("mobs.villager.attributes.max_health", villagerMaxHealth); diff --git a/patches/server/0021-Silk-touch-spawners.patch b/patches/server/0021-Silk-touch-spawners.patch index d793d05ae..2f7646605 100644 --- a/patches/server/0021-Silk-touch-spawners.patch +++ b/patches/server/0021-Silk-touch-spawners.patch @@ -170,7 +170,7 @@ index b1e04d41de80971a7a1616beb0860226ecc25045..9ce53046b7f67309c2d4636b95e6fb05 public void spawnAfterBreak(BlockState state, ServerLevel world, BlockPos pos, ItemStack stack) { super.spawnAfterBreak(state, world, pos, stack); diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 39891436be088064c3096999763641cc722d9bac..d583fdd73b85e6792fd04fe8d8f9b52c898c423c 100644 +index eed56c24c0c5bceef42addaa7e1cc17662fd1c49..c13a37baf05af23ad332d5ee2892c0efc3f79b5e 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -1,7 +1,13 @@ @@ -187,7 +187,7 @@ index 39891436be088064c3096999763641cc722d9bac..d583fdd73b85e6792fd04fe8d8f9b52c import java.util.HashMap; import java.util.List; import java.util.Map; -@@ -78,6 +84,29 @@ public class PurpurWorldConfig { +@@ -75,6 +81,29 @@ public class PurpurWorldConfig { playerInvulnerableWhileAcceptingResourcePack = getBoolean("gameplay-mechanics.player.invulnerable-while-accepting-resource-pack", playerInvulnerableWhileAcceptingResourcePack); } diff --git a/patches/server/0022-MC-168772-Fix-Add-turtle-egg-block-options.patch b/patches/server/0022-MC-168772-Fix-Add-turtle-egg-block-options.patch index 7ded948c0..1fe078fc3 100644 --- a/patches/server/0022-MC-168772-Fix-Add-turtle-egg-block-options.patch +++ b/patches/server/0022-MC-168772-Fix-Add-turtle-egg-block-options.patch @@ -50,10 +50,10 @@ index fdb3ab919a78221605257ae82bfd026346ce2ffb..e98fc3c235f9160f1928a8afb0d7991a } } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index d583fdd73b85e6792fd04fe8d8f9b52c898c423c..96202520c0f42db814fdb60ffb77dd0cdef12410 100644 +index c13a37baf05af23ad332d5ee2892c0efc3f79b5e..ed4c61a934b5bf470961a384813eb25ffe416082 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -1038,7 +1038,10 @@ public class PurpurWorldConfig { +@@ -1035,7 +1035,10 @@ public class PurpurWorldConfig { public boolean turtleRidable = false; public boolean turtleRidableInWater = false; public double turtleMaxHealth = 30.0D; @@ -65,7 +65,7 @@ index d583fdd73b85e6792fd04fe8d8f9b52c898c423c..96202520c0f42db814fdb60ffb77dd0c turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1047,6 +1050,9 @@ public class PurpurWorldConfig { +@@ -1044,6 +1047,9 @@ public class PurpurWorldConfig { set("mobs.turtle.attributes.max_health", oldValue); } turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); diff --git a/patches/server/0026-Giants-AI-settings.patch b/patches/server/0026-Giants-AI-settings.patch index b05376ed6..5bda1af8c 100644 --- a/patches/server/0026-Giants-AI-settings.patch +++ b/patches/server/0026-Giants-AI-settings.patch @@ -120,10 +120,10 @@ index a8ffdc8810152d77668aad7bad15a00c4d194d4c..91e28c414545d2bbb4e2f22c516d0f68 } } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 96202520c0f42db814fdb60ffb77dd0cdef12410..25db072223e7833c470b0023861df376af19831b 100644 +index ed4c61a934b5bf470961a384813eb25ffe416082..3c69825659439a0a5a7ee6fc97d98bf0ca3c8c5a 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -427,6 +427,10 @@ public class PurpurWorldConfig { +@@ -424,6 +424,10 @@ public class PurpurWorldConfig { public double giantMovementSpeed = 0.5D; public double giantAttackDamage = 50.0D; public double giantMaxHealth = 100.0D; @@ -134,7 +134,7 @@ index 96202520c0f42db814fdb60ffb77dd0cdef12410..25db072223e7833c470b0023861df376 private void giantSettings() { giantRidable = getBoolean("mobs.giant.ridable", giantRidable); giantRidableInWater = getBoolean("mobs.giant.ridable-in-water", giantRidableInWater); -@@ -442,6 +446,10 @@ public class PurpurWorldConfig { +@@ -439,6 +443,10 @@ public class PurpurWorldConfig { set("mobs.giant.attributes.max_health", oldValue); } giantMaxHealth = getDouble("mobs.giant.attributes.max_health", giantMaxHealth); diff --git a/patches/server/0027-Zombie-horse-naturally-spawn.patch b/patches/server/0027-Zombie-horse-naturally-spawn.patch index 54b4f0bfa..1e9d87819 100644 --- a/patches/server/0027-Zombie-horse-naturally-spawn.patch +++ b/patches/server/0027-Zombie-horse-naturally-spawn.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Zombie horse naturally spawn diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index ce49e2a5ac80280ae03579d72a436e836a03cf8e..e98cfb02e6432992259c23d3e81aa8cfef6882b3 100644 +index f0b9ff60b6122473bc2f87f56a6d190994079da6..14c3e9fcdfb088d3fe0a15266b50a7da82a5d240 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -87,6 +87,7 @@ import net.minecraft.world.entity.ai.village.poi.PoiManager; @@ -42,10 +42,10 @@ index ce49e2a5ac80280ae03579d72a436e836a03cf8e..e98cfb02e6432992259c23d3e81aa8cf LightningBolt entitylightning = (LightningBolt) EntityType.LIGHTNING_BOLT.create((net.minecraft.world.level.Level) this); diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 25db072223e7833c470b0023861df376af19831b..8154d79de126105233bd04b6935761236b10c6c0 100644 +index 3c69825659439a0a5a7ee6fc97d98bf0ca3c8c5a..bddf84e9830c4e46f0648f76523af471c3b03e66 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -1225,6 +1225,7 @@ public class PurpurWorldConfig { +@@ -1222,6 +1222,7 @@ public class PurpurWorldConfig { public double zombieHorseJumpStrengthMax = 1.0D; public double zombieHorseMovementSpeedMin = 0.2D; public double zombieHorseMovementSpeedMax = 0.2D; @@ -53,7 +53,7 @@ index 25db072223e7833c470b0023861df376af19831b..8154d79de126105233bd04b693576123 private void zombieHorseSettings() { zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); zombieHorseCanSwim = getBoolean("mobs.zombie_horse.can-swim", zombieHorseCanSwim); -@@ -1240,6 +1241,7 @@ public class PurpurWorldConfig { +@@ -1237,6 +1238,7 @@ public class PurpurWorldConfig { zombieHorseJumpStrengthMax = getDouble("mobs.zombie_horse.attributes.jump_strength.max", zombieHorseJumpStrengthMax); zombieHorseMovementSpeedMin = getDouble("mobs.zombie_horse.attributes.movement_speed.min", zombieHorseMovementSpeedMin); zombieHorseMovementSpeedMax = getDouble("mobs.zombie_horse.attributes.movement_speed.max", zombieHorseMovementSpeedMax); diff --git a/patches/server/0028-Charged-creeper-naturally-spawn.patch b/patches/server/0028-Charged-creeper-naturally-spawn.patch index fe9bfbcf9..12bd62a5b 100644 --- a/patches/server/0028-Charged-creeper-naturally-spawn.patch +++ b/patches/server/0028-Charged-creeper-naturally-spawn.patch @@ -24,10 +24,10 @@ index b71a6af3c2d1ca2a946b23efb11b0e794840cf25..b2b3630a90c685b0a692efb9bf8bb111 @Override diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 8154d79de126105233bd04b6935761236b10c6c0..4e4541c05a6ed9eb96012d5a5584f1e81e354846 100644 +index bddf84e9830c4e46f0648f76523af471c3b03e66..cfd14b07e733434f208199def72626437b7a69ba 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -249,6 +249,7 @@ public class PurpurWorldConfig { +@@ -246,6 +246,7 @@ public class PurpurWorldConfig { public boolean creeperRidable = false; public boolean creeperRidableInWater = false; public double creeperMaxHealth = 20.0D; @@ -35,7 +35,7 @@ index 8154d79de126105233bd04b6935761236b10c6c0..4e4541c05a6ed9eb96012d5a5584f1e8 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -258,6 +259,7 @@ public class PurpurWorldConfig { +@@ -255,6 +256,7 @@ public class PurpurWorldConfig { set("mobs.creeper.attributes.max_health", oldValue); } creeperMaxHealth = getDouble("mobs.creeper.attributes.max_health", creeperMaxHealth); diff --git a/patches/server/0029-Rabbit-naturally-spawn-toast-and-killer.patch b/patches/server/0029-Rabbit-naturally-spawn-toast-and-killer.patch index 05755bf46..1d2eeb0a9 100644 --- a/patches/server/0029-Rabbit-naturally-spawn-toast-and-killer.patch +++ b/patches/server/0029-Rabbit-naturally-spawn-toast-and-killer.patch @@ -38,10 +38,10 @@ index 587feda351efae19407cb9f23c6c1d42d5ed0cc9..e0ba1ef404c9f8ba1eae563b733d10d9 int i = this.random.nextInt(100); diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 4e4541c05a6ed9eb96012d5a5584f1e81e354846..9f025b574aa6a0841a438d039333604b0bf95af4 100644 +index cfd14b07e733434f208199def72626437b7a69ba..92b19b28abffdab961550c001fbed7c26d62a05d 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -803,6 +803,8 @@ public class PurpurWorldConfig { +@@ -800,6 +800,8 @@ public class PurpurWorldConfig { public boolean rabbitRidable = false; public boolean rabbitRidableInWater = false; public double rabbitMaxHealth = 3.0D; @@ -50,7 +50,7 @@ index 4e4541c05a6ed9eb96012d5a5584f1e81e354846..9f025b574aa6a0841a438d039333604b private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -812,6 +814,8 @@ public class PurpurWorldConfig { +@@ -809,6 +811,8 @@ public class PurpurWorldConfig { set("mobs.rabbit.attributes.max_health", oldValue); } rabbitMaxHealth = getDouble("mobs.rabbit.attributes.max_health", rabbitMaxHealth); diff --git a/patches/server/0032-Tulips-change-fox-type.patch b/patches/server/0032-Tulips-change-fox-type.patch index e8f4d3e34..da75f165a 100644 --- a/patches/server/0032-Tulips-change-fox-type.patch +++ b/patches/server/0032-Tulips-change-fox-type.patch @@ -75,10 +75,10 @@ index 9ce846d057a08b6a2b6576255bc55293707e3d24..d31b906c87e22f505bee22f21dd8ec1e // Paper start - Cancellable death event protected org.bukkit.event.entity.EntityDeathEvent dropAllDeathLoot(DamageSource source) { diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 9f025b574aa6a0841a438d039333604b0bf95af4..5b0b9e17e3ca490ed32a98983fdba94aa423814f 100644 +index 92b19b28abffdab961550c001fbed7c26d62a05d..6def31d73b17856518c065ea35b2aa094f8ffe89 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -397,6 +397,7 @@ public class PurpurWorldConfig { +@@ -394,6 +394,7 @@ public class PurpurWorldConfig { public boolean foxRidable = false; public boolean foxRidableInWater = false; public double foxMaxHealth = 10.0D; @@ -86,7 +86,7 @@ index 9f025b574aa6a0841a438d039333604b0bf95af4..5b0b9e17e3ca490ed32a98983fdba94a private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -406,6 +407,7 @@ public class PurpurWorldConfig { +@@ -403,6 +404,7 @@ public class PurpurWorldConfig { set("mobs.fox.attributes.max_health", oldValue); } foxMaxHealth = getDouble("mobs.fox.attributes.max_health", foxMaxHealth); diff --git a/patches/server/0033-Breedable-Polar-Bears.patch b/patches/server/0033-Breedable-Polar-Bears.patch index 53562b6b7..b476a35f1 100644 --- a/patches/server/0033-Breedable-Polar-Bears.patch +++ b/patches/server/0033-Breedable-Polar-Bears.patch @@ -59,10 +59,10 @@ index 18780fb268cabb47bb0deb84c44520831c1a762b..d39c88af3882a09ff1a06f9052d7b9b8 this.goalSelector.addGoal(5, new RandomStrollGoal(this, 1.0D)); this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F)); diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 5b0b9e17e3ca490ed32a98983fdba94aa423814f..f15a49cedd7555f14199a4c6a13b23ebef881f52 100644 +index 6def31d73b17856518c065ea35b2aa094f8ffe89..3f851b16e3410cd5c655a04eddbc9396aefe4927 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -779,6 +779,8 @@ public class PurpurWorldConfig { +@@ -776,6 +776,8 @@ public class PurpurWorldConfig { public boolean polarBearRidable = false; public boolean polarBearRidableInWater = false; public double polarBearMaxHealth = 30.0D; @@ -71,7 +71,7 @@ index 5b0b9e17e3ca490ed32a98983fdba94aa423814f..f15a49cedd7555f14199a4c6a13b23eb private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -788,6 +790,9 @@ public class PurpurWorldConfig { +@@ -785,6 +787,9 @@ public class PurpurWorldConfig { set("mobs.polar_bear.attributes.max_health", oldValue); } polarBearMaxHealth = getDouble("mobs.polar_bear.attributes.max_health", polarBearMaxHealth); diff --git a/patches/server/0034-Chickens-can-retaliate.patch b/patches/server/0034-Chickens-can-retaliate.patch index 7a29a89af..53cae1c2d 100644 --- a/patches/server/0034-Chickens-can-retaliate.patch +++ b/patches/server/0034-Chickens-can-retaliate.patch @@ -51,10 +51,10 @@ index 55dccf338f9fba17fbcb88672d36b83e7bbec88b..eaec6eba96db3b8ce046208a4a1e5fc4 @Override diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index f15a49cedd7555f14199a4c6a13b23ebef881f52..df0631f55f74fed00a6dc3e942d37613fc34c067 100644 +index 3f851b16e3410cd5c655a04eddbc9396aefe4927..b4c09f8a37efd66a2d79373923c774b798fa6e35 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -209,6 +209,7 @@ public class PurpurWorldConfig { +@@ -206,6 +206,7 @@ public class PurpurWorldConfig { public boolean chickenRidable = false; public boolean chickenRidableInWater = false; public double chickenMaxHealth = 4.0D; @@ -62,7 +62,7 @@ index f15a49cedd7555f14199a4c6a13b23ebef881f52..df0631f55f74fed00a6dc3e942d37613 private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -218,6 +219,7 @@ public class PurpurWorldConfig { +@@ -215,6 +216,7 @@ public class PurpurWorldConfig { set("mobs.chicken.attributes.max_health", oldValue); } chickenMaxHealth = getDouble("mobs.chicken.attributes.max_health", chickenMaxHealth); diff --git a/patches/server/0036-Cat-spawning-options.patch b/patches/server/0036-Cat-spawning-options.patch index d9c72c1e3..f5a0d05a7 100644 --- a/patches/server/0036-Cat-spawning-options.patch +++ b/patches/server/0036-Cat-spawning-options.patch @@ -49,10 +49,10 @@ index 4cab98b5e441a174482893d3d289bbafa1f7a5fc..fa3cdff99a16b67ed86c8f7940ffa139 } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 853cf252723820bc7578c876e9cb79c9adc38918..616fcd50cf88aec7dc32ad3bcdae89349e3369e9 100644 +index eb318f03866927fb4e81bdb814d7c0931a6960cb..88f2405c531574b6042d2be5a358f003200c1879 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -186,6 +186,9 @@ public class PurpurWorldConfig { +@@ -183,6 +183,9 @@ public class PurpurWorldConfig { public boolean catRidable = false; public boolean catRidableInWater = false; public double catMaxHealth = 10.0D; @@ -62,7 +62,7 @@ index 853cf252723820bc7578c876e9cb79c9adc38918..616fcd50cf88aec7dc32ad3bcdae8934 private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -195,6 +198,9 @@ public class PurpurWorldConfig { +@@ -192,6 +195,9 @@ public class PurpurWorldConfig { set("mobs.cat.attributes.max_health", oldValue); } catMaxHealth = getDouble("mobs.cat.attributes.max_health", catMaxHealth); diff --git a/patches/server/0038-Cows-eat-mushrooms.patch b/patches/server/0038-Cows-eat-mushrooms.patch index f714fe50c..ba9d173af 100644 --- a/patches/server/0038-Cows-eat-mushrooms.patch +++ b/patches/server/0038-Cows-eat-mushrooms.patch @@ -114,10 +114,10 @@ index bee82d5bf600cbeacfcede600e5606529af1435e..9da76357da891a70e20ad80f50873b3b public Cow getBreedOffspring(ServerLevel world, AgeableMob entity) { return (Cow) EntityType.COW.create((Level) world); diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 616fcd50cf88aec7dc32ad3bcdae89349e3369e9..1a30365c146e195d487b77c2e31c08644f2e6ae5 100644 +index 88f2405c531574b6042d2be5a358f003200c1879..0e8efd3a41b121e54f67b6f07d1b7462d4fd190f 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -248,6 +248,7 @@ public class PurpurWorldConfig { +@@ -245,6 +245,7 @@ public class PurpurWorldConfig { public boolean cowRidable = false; public boolean cowRidableInWater = false; public double cowMaxHealth = 10.0D; @@ -125,7 +125,7 @@ index 616fcd50cf88aec7dc32ad3bcdae89349e3369e9..1a30365c146e195d487b77c2e31c0864 private void cowSettings() { cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); -@@ -257,6 +258,7 @@ public class PurpurWorldConfig { +@@ -254,6 +255,7 @@ public class PurpurWorldConfig { set("mobs.cow.attributes.max_health", oldValue); } cowMaxHealth = getDouble("mobs.cow.attributes.max_health", cowMaxHealth); diff --git a/patches/server/0040-Pigs-give-saddle-back.patch b/patches/server/0040-Pigs-give-saddle-back.patch index ffeb8f70c..baa289179 100644 --- a/patches/server/0040-Pigs-give-saddle-back.patch +++ b/patches/server/0040-Pigs-give-saddle-back.patch @@ -28,10 +28,10 @@ index f4a099e691dce3c57069e76d67859161b459098e..518d28dc0b5b8c04263c93a4347e4c97 } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 1a30365c146e195d487b77c2e31c08644f2e6ae5..387741730f7b8e4c1670af9e6af0b97e06fdd493 100644 +index 0e8efd3a41b121e54f67b6f07d1b7462d4fd190f..6629a895a3f0f8b1ccb760941c6bd37e912d7a64 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -738,6 +738,7 @@ public class PurpurWorldConfig { +@@ -735,6 +735,7 @@ public class PurpurWorldConfig { public boolean pigRidable = false; public boolean pigRidableInWater = false; public double pigMaxHealth = 10.0D; @@ -39,7 +39,7 @@ index 1a30365c146e195d487b77c2e31c08644f2e6ae5..387741730f7b8e4c1670af9e6af0b97e private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -747,6 +748,7 @@ public class PurpurWorldConfig { +@@ -744,6 +745,7 @@ public class PurpurWorldConfig { set("mobs.pig.attributes.max_health", oldValue); } pigMaxHealth = getDouble("mobs.pig.attributes.max_health", pigMaxHealth); diff --git a/patches/server/0041-Snowman-drop-and-put-back-pumpkin.patch b/patches/server/0041-Snowman-drop-and-put-back-pumpkin.patch index ce7c6ca57..9ecec95b0 100644 --- a/patches/server/0041-Snowman-drop-and-put-back-pumpkin.patch +++ b/patches/server/0041-Snowman-drop-and-put-back-pumpkin.patch @@ -32,10 +32,10 @@ index 7fbe1a62e9c67a8bdaf13aaa9fae1d8742d75148..0733f9c057fef17fd79a4769f19b78f4 } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 387741730f7b8e4c1670af9e6af0b97e06fdd493..ae59b5f67407c80c16e6a1f55dd4d51b47e3d422 100644 +index 6629a895a3f0f8b1ccb760941c6bd37e912d7a64..002064c2660e746c9ea1ef0d1b0c7610d5c97681 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -969,6 +969,8 @@ public class PurpurWorldConfig { +@@ -966,6 +966,8 @@ public class PurpurWorldConfig { public boolean snowGolemRidableInWater = false; public boolean snowGolemLeaveTrailWhenRidden = false; public double snowGolemMaxHealth = 4.0D; @@ -44,7 +44,7 @@ index 387741730f7b8e4c1670af9e6af0b97e06fdd493..ae59b5f67407c80c16e6a1f55dd4d51b private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -979,6 +981,8 @@ public class PurpurWorldConfig { +@@ -976,6 +978,8 @@ public class PurpurWorldConfig { set("mobs.snow_golem.attributes.max_health", oldValue); } snowGolemMaxHealth = getDouble("mobs.snow_golem.attributes.max_health", snowGolemMaxHealth); diff --git a/patches/server/0042-Ender-dragon-always-drop-full-exp.patch b/patches/server/0042-Ender-dragon-always-drop-full-exp.patch index 6b7281d73..4d75a959b 100644 --- a/patches/server/0042-Ender-dragon-always-drop-full-exp.patch +++ b/patches/server/0042-Ender-dragon-always-drop-full-exp.patch @@ -18,10 +18,10 @@ index 1f40e8d1e73fec0aaee29c658e3d24f499fa9501..1e97d52e02d401c905e1dfcd758c63e4 } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index ae59b5f67407c80c16e6a1f55dd4d51b47e3d422..c0d3b4646aa0e45dad91747778192334c3527b9a 100644 +index 002064c2660e746c9ea1ef0d1b0c7610d5c97681..6a2632924054c199cba560cfef67e40fe1aef446 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -351,6 +351,7 @@ public class PurpurWorldConfig { +@@ -348,6 +348,7 @@ public class PurpurWorldConfig { public boolean enderDragonRidableInWater = false; public double enderDragonMaxY = 256D; public double enderDragonMaxHealth = 200.0D; @@ -29,7 +29,7 @@ index ae59b5f67407c80c16e6a1f55dd4d51b47e3d422..c0d3b4646aa0e45dad91747778192334 private void enderDragonSettings() { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); -@@ -365,6 +366,7 @@ public class PurpurWorldConfig { +@@ -362,6 +363,7 @@ public class PurpurWorldConfig { set("mobs.ender_dragon.attributes.max_health", oldValue); } enderDragonMaxHealth = getDouble("mobs.ender_dragon.attributes.max_health", enderDragonMaxHealth); diff --git a/patches/server/0043-Signs-editable-on-right-click.patch b/patches/server/0043-Signs-editable-on-right-click.patch index 35085c267..197568f29 100644 --- a/patches/server/0043-Signs-editable-on-right-click.patch +++ b/patches/server/0043-Signs-editable-on-right-click.patch @@ -35,10 +35,10 @@ index 1844ea93f8cea420f01937f85ed17c0ec1bb8bf0..9e80ba8970cad91ea22ac701f76e1413 } else { return InteractionResult.PASS; diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index c0d3b4646aa0e45dad91747778192334c3527b9a..dda469098ffac8b41531b05c0363e82d43ff6f6a 100644 +index 6a2632924054c199cba560cfef67e40fe1aef446..6ec28fc27b5362fe6928677b8c17dc60e56b36cc 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -112,6 +112,11 @@ public class PurpurWorldConfig { +@@ -109,6 +109,11 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0044-Signs-allow-color-codes.patch b/patches/server/0044-Signs-allow-color-codes.patch index 62451f261..433d3125f 100644 --- a/patches/server/0044-Signs-allow-color-codes.patch +++ b/patches/server/0044-Signs-allow-color-codes.patch @@ -77,10 +77,10 @@ index 9b5d11ece006d7aa893360a84ba652c666517ac1..3373c21f90eb08e2bfbb71bc348d085a @Override public ClientboundBlockEntityDataPacket getUpdatePacket() { diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index dda469098ffac8b41531b05c0363e82d43ff6f6a..3129e8f7156276298b5bdec9aa52cb546893d1a6 100644 +index 6ec28fc27b5362fe6928677b8c17dc60e56b36cc..9eda28fd9b10df4ae2f2df1b03b4321b203608bc 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -112,8 +112,10 @@ public class PurpurWorldConfig { +@@ -109,8 +109,10 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0045-Allow-soil-to-moisten-from-water-directly-under-it.patch b/patches/server/0045-Allow-soil-to-moisten-from-water-directly-under-it.patch index fadf94490..3a6df017e 100644 --- a/patches/server/0045-Allow-soil-to-moisten-from-water-directly-under-it.patch +++ b/patches/server/0045-Allow-soil-to-moisten-from-water-directly-under-it.patch @@ -36,10 +36,10 @@ index aa1ba8b74ab70b6cede99e4853ac0203f388ab06..97e5cb4fd9f97c0bfa9d66c0ceac84e1 @Override diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 3129e8f7156276298b5bdec9aa52cb546893d1a6..624de1ba34417234244e7ba5d7bd248fdd19c095 100644 +index 9eda28fd9b10df4ae2f2df1b03b4321b203608bc..267f2efb10fb1603631efbb0b675a1525492f5aa 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -112,6 +112,11 @@ public class PurpurWorldConfig { +@@ -109,6 +109,11 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0047-Disable-loot-drops-on-death-by-cramming.patch b/patches/server/0047-Disable-loot-drops-on-death-by-cramming.patch index ffa19548c..2496ea972 100644 --- a/patches/server/0047-Disable-loot-drops-on-death-by-cramming.patch +++ b/patches/server/0047-Disable-loot-drops-on-death-by-cramming.patch @@ -20,11 +20,11 @@ index bc4c210a7161c8af3817a828dbdd7601dc649df8..e284106d762735a7c203c19e3c5a06a6 // CraftBukkit start - Call death event org.bukkit.event.entity.EntityDeathEvent deathEvent = CraftEventFactory.callEntityDeathEvent(this, this.drops); // Paper diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 86892775f8aeaac1e6ffdcb4dad4c3e5016fc91c..435c6f5c561b645c04aca6ea83566da1e0047acb 100644 +index 340546a3478337081978c7394ec92769926b36e6..408a9b6777497961280706f6a2860f9ea9d02518 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -73,6 +73,11 @@ public class PurpurWorldConfig { - armorstandStepHeight = (float) getDouble("gameplay-mechanics.armorstand.step-height", armorstandStepHeight); +@@ -173,6 +173,11 @@ public class PurpurWorldConfig { + }); } + public boolean disableDropsOnCrammingDeath = false; @@ -32,6 +32,6 @@ index 86892775f8aeaac1e6ffdcb4dad4c3e5016fc91c..435c6f5c561b645c04aca6ea83566da1 + disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath); + } + - public double minecartMaxSpeed = 0.4D; - public boolean minecartPlaceAnywhere = false; - public boolean minecartControllable = false; + public boolean farmlandGetsMoistFromBelow = false; + private void farmlandSettings() { + farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); diff --git a/patches/server/0049-Option-to-toggle-milk-curing-bad-omen.patch b/patches/server/0049-Option-to-toggle-milk-curing-bad-omen.patch index f505b59d8..d96f993a0 100644 --- a/patches/server/0049-Option-to-toggle-milk-curing-bad-omen.patch +++ b/patches/server/0049-Option-to-toggle-milk-curing-bad-omen.patch @@ -28,10 +28,10 @@ index f33977d95b6db473be4f95075ba99caf90ad0220..56dc04d8875971ee9a5d077a695509af return stack.isEmpty() ? new ItemStack(Items.BUCKET) : stack; diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 435c6f5c561b645c04aca6ea83566da1e0047acb..5d363a5103d159415d7d201ad9079502bff4de53 100644 +index 408a9b6777497961280706f6a2860f9ea9d02518..928bddf54f77bd97cffc31e8bada979f42fb9120 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -74,8 +74,10 @@ public class PurpurWorldConfig { +@@ -174,8 +174,10 @@ public class PurpurWorldConfig { } public boolean disableDropsOnCrammingDeath = false; @@ -41,4 +41,4 @@ index 435c6f5c561b645c04aca6ea83566da1e0047acb..5d363a5103d159415d7d201ad9079502 + milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); } - public double minecartMaxSpeed = 0.4D; + public boolean farmlandGetsMoistFromBelow = false; diff --git a/patches/server/0054-Add-wither-skeleton-takes-wither-damage-option.patch b/patches/server/0054-Add-wither-skeleton-takes-wither-damage-option.patch index 6bd56374d..bd1f3edf0 100644 --- a/patches/server/0054-Add-wither-skeleton-takes-wither-damage-option.patch +++ b/patches/server/0054-Add-wither-skeleton-takes-wither-damage-option.patch @@ -17,10 +17,10 @@ index 8212ee2cc1242c0a3626f3643c455f3be0de18c2..aaf6f43c0f37a51a7b2db57b8da43365 } } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 5d363a5103d159415d7d201ad9079502bff4de53..48f6faad6977aa5b5e7e3780a1466a4f222b6f71 100644 +index 928bddf54f77bd97cffc31e8bada979f42fb9120..2788371531f09876a4e5e0d53c58de631187410c 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -1281,6 +1281,7 @@ public class PurpurWorldConfig { +@@ -1278,6 +1278,7 @@ public class PurpurWorldConfig { public boolean witherSkeletonRidable = false; public boolean witherSkeletonRidableInWater = false; public double witherSkeletonMaxHealth = 20.0D; @@ -28,7 +28,7 @@ index 5d363a5103d159415d7d201ad9079502bff4de53..48f6faad6977aa5b5e7e3780a1466a4f private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -1290,6 +1291,7 @@ public class PurpurWorldConfig { +@@ -1287,6 +1288,7 @@ public class PurpurWorldConfig { set("mobs.wither_skeleton.attributes.max_health", oldValue); } witherSkeletonMaxHealth = getDouble("mobs.wither_skeleton.attributes.max_health", witherSkeletonMaxHealth); diff --git a/patches/server/0056-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch b/patches/server/0056-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch index 85a5e4cca..a5d0e0700 100644 --- a/patches/server/0056-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch +++ b/patches/server/0056-Add-option-to-allow-loyalty-on-tridents-to-work-in-t.patch @@ -18,10 +18,10 @@ index c95eef8596fe3e1ca83e620a6c54b164c797cbe1..1e6a5404d767318de29184b3e3a2bc41 if (!this.level.isClientSide && this.pickup == AbstractArrow.Pickup.ALLOWED) { this.spawnAtLocation(this.getPickupItem(), 0.1F); diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 48f6faad6977aa5b5e7e3780a1466a4f222b6f71..14551d5fc853dfde458040e806e84f44d716b9c9 100644 +index 2788371531f09876a4e5e0d53c58de631187410c..fd62ec22aa21b8c129c4f9fa304fe75b88cd2728 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -75,9 +75,11 @@ public class PurpurWorldConfig { +@@ -175,9 +175,11 @@ public class PurpurWorldConfig { public boolean disableDropsOnCrammingDeath = false; public boolean milkCuresBadOmen = true; @@ -32,4 +32,4 @@ index 48f6faad6977aa5b5e7e3780a1466a4f222b6f71..14551d5fc853dfde458040e806e84f44 + tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight); } - public double minecartMaxSpeed = 0.4D; + public boolean farmlandGetsMoistFromBelow = false; diff --git a/patches/server/0057-Add-enderman-and-creeper-griefing-controls.patch b/patches/server/0057-Add-enderman-and-creeper-griefing-controls.patch index 7fabd877f..687072f8e 100644 --- a/patches/server/0057-Add-enderman-and-creeper-griefing-controls.patch +++ b/patches/server/0057-Add-enderman-and-creeper-griefing-controls.patch @@ -38,10 +38,10 @@ index b061ecc42122ef66fbf87fe017023abca5728a01..6e0b5fbf5b0d216b6b7c647d45ef37cd } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 14551d5fc853dfde458040e806e84f44d716b9c9..1687e191ef9557e8bb0014960188207162ab8948 100644 +index fd62ec22aa21b8c129c4f9fa304fe75b88cd2728..a0183eefc826d8c8d8abfa7a3d8e9eba22c9b233 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -350,6 +350,7 @@ public class PurpurWorldConfig { +@@ -347,6 +347,7 @@ public class PurpurWorldConfig { public boolean creeperRidableInWater = false; public double creeperMaxHealth = 20.0D; public double creeperChargedChance = 0.0D; @@ -49,7 +49,7 @@ index 14551d5fc853dfde458040e806e84f44d716b9c9..1687e191ef9557e8bb00149601882071 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -360,6 +361,7 @@ public class PurpurWorldConfig { +@@ -357,6 +358,7 @@ public class PurpurWorldConfig { } creeperMaxHealth = getDouble("mobs.creeper.attributes.max_health", creeperMaxHealth); creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance); @@ -57,7 +57,7 @@ index 14551d5fc853dfde458040e806e84f44d716b9c9..1687e191ef9557e8bb00149601882071 } public boolean dolphinRidable = false; -@@ -457,6 +459,7 @@ public class PurpurWorldConfig { +@@ -454,6 +456,7 @@ public class PurpurWorldConfig { public boolean endermanRidable = false; public boolean endermanRidableInWater = false; public double endermanMaxHealth = 40.0D; @@ -65,7 +65,7 @@ index 14551d5fc853dfde458040e806e84f44d716b9c9..1687e191ef9557e8bb00149601882071 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -466,6 +469,7 @@ public class PurpurWorldConfig { +@@ -463,6 +466,7 @@ public class PurpurWorldConfig { set("mobs.enderman.attributes.max_health", oldValue); } endermanMaxHealth = getDouble("mobs.enderman.attributes.max_health", endermanMaxHealth); diff --git a/patches/server/0058-Entities-pick-up-loot-bypass-mob-griefing-gamerule.patch b/patches/server/0058-Entities-pick-up-loot-bypass-mob-griefing-gamerule.patch index d77105d88..5506e032e 100644 --- a/patches/server/0058-Entities-pick-up-loot-bypass-mob-griefing-gamerule.patch +++ b/patches/server/0058-Entities-pick-up-loot-bypass-mob-griefing-gamerule.patch @@ -18,10 +18,10 @@ index 75931cce0f430975fc54216f20e235833a74a72c..0dbce3ab5ff891b94d4209203b97fd78 Iterator iterator = list.iterator(); diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 1687e191ef9557e8bb0014960188207162ab8948..e24301d143ac29501f8f6dca15c1e5ed0a2b8281 100644 +index a0183eefc826d8c8d8abfa7a3d8e9eba22c9b233..74850de943a3c0209358e872ea2c8ff2c8a2e4ee 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -74,10 +74,12 @@ public class PurpurWorldConfig { +@@ -174,10 +174,12 @@ public class PurpurWorldConfig { } public boolean disableDropsOnCrammingDeath = false; diff --git a/patches/server/0059-Villagers-farming-can-bypass-mob-griefing-gamerule.patch b/patches/server/0059-Villagers-farming-can-bypass-mob-griefing-gamerule.patch index 0fadb4a18..c026e3664 100644 --- a/patches/server/0059-Villagers-farming-can-bypass-mob-griefing-gamerule.patch +++ b/patches/server/0059-Villagers-farming-can-bypass-mob-griefing-gamerule.patch @@ -18,10 +18,10 @@ index 41b5652578e4a703cb6f03e82654b27ea6302b99..2d83b7252814a3a921db32a62f6bfb71 } else if (entity.getVillagerData().getProfession() != VillagerProfession.FARMER) { return false; diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index e24301d143ac29501f8f6dca15c1e5ed0a2b8281..73bea53e7e4d0a0a937b6a8964fc2a49b16d3db6 100644 +index 74850de943a3c0209358e872ea2c8ff2c8a2e4ee..f674500a8e7cd50cf94ae2d13d0c54a9b29309f5 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -1211,6 +1211,7 @@ public class PurpurWorldConfig { +@@ -1208,6 +1208,7 @@ public class PurpurWorldConfig { public double villagerMaxHealth = 20.0D; public int villagerBrainTicks = 1; public boolean villagerUseBrainTicksOnlyWhenLagging = true; @@ -29,7 +29,7 @@ index e24301d143ac29501f8f6dca15c1e5ed0a2b8281..73bea53e7e4d0a0a937b6a8964fc2a49 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1222,6 +1223,7 @@ public class PurpurWorldConfig { +@@ -1219,6 +1220,7 @@ public class PurpurWorldConfig { villagerMaxHealth = getDouble("mobs.villager.attributes.max_health", villagerMaxHealth); villagerBrainTicks = getInt("mobs.villager.brain-ticks", villagerBrainTicks); villagerUseBrainTicksOnlyWhenLagging = getBoolean("mobs.villager.use-brain-ticks-only-when-lagging", villagerUseBrainTicksOnlyWhenLagging); diff --git a/patches/server/0060-Villagers-follow-emerald-blocks.patch b/patches/server/0060-Villagers-follow-emerald-blocks.patch index 5fa0d2dbe..68ddbb1c8 100644 --- a/patches/server/0060-Villagers-follow-emerald-blocks.patch +++ b/patches/server/0060-Villagers-follow-emerald-blocks.patch @@ -41,10 +41,10 @@ index d2588a91b55aebdecf8e1644498111ccf84a9dc9..393061e13375bf7a7ee57973b4abac83 this.goalSelector.addGoal(8, new WaterAvoidingRandomStrollGoal(this, 0.35D)); this.goalSelector.addGoal(9, new InteractGoal(this, Player.class, 3.0F, 1.0F)); diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 73bea53e7e4d0a0a937b6a8964fc2a49b16d3db6..5e340655c472a3e8c7c017ce7eda7881f1530b43 100644 +index f674500a8e7cd50cf94ae2d13d0c54a9b29309f5..fcecd4391d43f6a56d8ca562c95973b53f053d63 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -1212,6 +1212,7 @@ public class PurpurWorldConfig { +@@ -1209,6 +1209,7 @@ public class PurpurWorldConfig { public int villagerBrainTicks = 1; public boolean villagerUseBrainTicksOnlyWhenLagging = true; public boolean villagerFarmingBypassMobGriefing = false; @@ -52,7 +52,7 @@ index 73bea53e7e4d0a0a937b6a8964fc2a49b16d3db6..5e340655c472a3e8c7c017ce7eda7881 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1224,6 +1225,7 @@ public class PurpurWorldConfig { +@@ -1221,6 +1222,7 @@ public class PurpurWorldConfig { villagerBrainTicks = getInt("mobs.villager.brain-ticks", villagerBrainTicks); villagerUseBrainTicksOnlyWhenLagging = getBoolean("mobs.villager.use-brain-ticks-only-when-lagging", villagerUseBrainTicksOnlyWhenLagging); villagerFarmingBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerFarmingBypassMobGriefing); @@ -60,7 +60,7 @@ index 73bea53e7e4d0a0a937b6a8964fc2a49b16d3db6..5e340655c472a3e8c7c017ce7eda7881 } public boolean vindicatorRidable = false; -@@ -1243,6 +1245,7 @@ public class PurpurWorldConfig { +@@ -1240,6 +1242,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderRidable = false; public boolean wanderingTraderRidableInWater = false; public double wanderingTraderMaxHealth = 20.0D; @@ -68,7 +68,7 @@ index 73bea53e7e4d0a0a937b6a8964fc2a49b16d3db6..5e340655c472a3e8c7c017ce7eda7881 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -1252,6 +1255,7 @@ public class PurpurWorldConfig { +@@ -1249,6 +1252,7 @@ public class PurpurWorldConfig { set("mobs.wandering_trader.attributes.max_health", oldValue); } wanderingTraderMaxHealth = getDouble("mobs.wandering_trader.attributes.max_health", wanderingTraderMaxHealth); diff --git a/patches/server/0061-Allow-leashing-villagers.patch b/patches/server/0061-Allow-leashing-villagers.patch index 936c69b20..6a064082d 100644 --- a/patches/server/0061-Allow-leashing-villagers.patch +++ b/patches/server/0061-Allow-leashing-villagers.patch @@ -49,10 +49,10 @@ index 393061e13375bf7a7ee57973b4abac83ffa15fa3..c48935d35a6141c41db22e3ec172d599 @Override diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 5e340655c472a3e8c7c017ce7eda7881f1530b43..4133c929d53556d25c4fe51e54c09fd259c212cb 100644 +index fcecd4391d43f6a56d8ca562c95973b53f053d63..a245101344ce1e2db2c57938644757364447963c 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -1213,6 +1213,7 @@ public class PurpurWorldConfig { +@@ -1210,6 +1210,7 @@ public class PurpurWorldConfig { public boolean villagerUseBrainTicksOnlyWhenLagging = true; public boolean villagerFarmingBypassMobGriefing = false; public boolean villagerFollowEmeraldBlock = false; @@ -60,7 +60,7 @@ index 5e340655c472a3e8c7c017ce7eda7881f1530b43..4133c929d53556d25c4fe51e54c09fd2 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1226,6 +1227,7 @@ public class PurpurWorldConfig { +@@ -1223,6 +1224,7 @@ public class PurpurWorldConfig { villagerUseBrainTicksOnlyWhenLagging = getBoolean("mobs.villager.use-brain-ticks-only-when-lagging", villagerUseBrainTicksOnlyWhenLagging); villagerFarmingBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerFarmingBypassMobGriefing); villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock); @@ -68,7 +68,7 @@ index 5e340655c472a3e8c7c017ce7eda7881f1530b43..4133c929d53556d25c4fe51e54c09fd2 } public boolean vindicatorRidable = false; -@@ -1246,6 +1248,7 @@ public class PurpurWorldConfig { +@@ -1243,6 +1245,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderRidableInWater = false; public double wanderingTraderMaxHealth = 20.0D; public boolean wanderingTraderFollowEmeraldBlock = false; @@ -76,7 +76,7 @@ index 5e340655c472a3e8c7c017ce7eda7881f1530b43..4133c929d53556d25c4fe51e54c09fd2 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -1256,6 +1259,7 @@ public class PurpurWorldConfig { +@@ -1253,6 +1256,7 @@ public class PurpurWorldConfig { } wanderingTraderMaxHealth = getDouble("mobs.wandering_trader.attributes.max_health", wanderingTraderMaxHealth); wanderingTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", wanderingTraderFollowEmeraldBlock); diff --git a/patches/server/0062-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0062-Implement-configurable-search-radius-for-villagers-t.patch index 6b7c8f4ec..a558513b4 100644 --- a/patches/server/0062-Implement-configurable-search-radius-for-villagers-t.patch +++ b/patches/server/0062-Implement-configurable-search-radius-for-villagers-t.patch @@ -18,10 +18,10 @@ index 52a592e569d020dca45916be7b5fad28c9d480de..5e100dbdbd6cfb4aa34b0d6b1ce09138 for (int i = 0; i < 10; ++i) { diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 4133c929d53556d25c4fe51e54c09fd259c212cb..420eeef9ab551210eedebfd027dd5d9e1b1b9eb5 100644 +index a245101344ce1e2db2c57938644757364447963c..c84ca5ddc36bf91252950ec609ce405b18348dcd 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -1214,6 +1214,8 @@ public class PurpurWorldConfig { +@@ -1211,6 +1211,8 @@ public class PurpurWorldConfig { public boolean villagerFarmingBypassMobGriefing = false; public boolean villagerFollowEmeraldBlock = false; public boolean villagerCanBeLeashed = false; @@ -30,7 +30,7 @@ index 4133c929d53556d25c4fe51e54c09fd259c212cb..420eeef9ab551210eedebfd027dd5d9e private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1228,6 +1230,8 @@ public class PurpurWorldConfig { +@@ -1225,6 +1227,8 @@ public class PurpurWorldConfig { villagerFarmingBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerFarmingBypassMobGriefing); villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock); villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); diff --git a/patches/server/0063-Implement-infinite-lava.patch b/patches/server/0063-Implement-infinite-lava.patch index a306b32d5..cf69cb9f8 100644 --- a/patches/server/0063-Implement-infinite-lava.patch +++ b/patches/server/0063-Implement-infinite-lava.patch @@ -58,10 +58,10 @@ index 695783e64564b1d2a178d57a89737d2a97ab9014..cd1a33a1f10d04a91358f51d736bda34 protected boolean canConvertToSource() { return false; diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 420eeef9ab551210eedebfd027dd5d9e1b1b9eb5..82bb16a56f9c81a0f9a4fa29756ad793b8a24476 100644 +index c84ca5ddc36bf91252950ec609ce405b18348dcd..8f0d4cf26d85de197fbddcdb7d42ee5f12cbd078 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -192,6 +192,13 @@ public class PurpurWorldConfig { +@@ -189,6 +189,13 @@ public class PurpurWorldConfig { farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); } diff --git a/patches/server/0064-Make-lava-flow-speed-configurable.patch b/patches/server/0064-Make-lava-flow-speed-configurable.patch index 10e9669ad..566b69e89 100644 --- a/patches/server/0064-Make-lava-flow-speed-configurable.patch +++ b/patches/server/0064-Make-lava-flow-speed-configurable.patch @@ -18,10 +18,10 @@ index cd1a33a1f10d04a91358f51d736bda34110324c4..b0d671ba015d1ad37fdf600b8e70def2 @Override diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 82bb16a56f9c81a0f9a4fa29756ad793b8a24476..92de2b4521ff5b462f7ff93c05a3f13d8e8c21f3 100644 +index 8f0d4cf26d85de197fbddcdb7d42ee5f12cbd078..3485b925d113a2619601a696acded3a16f9985f5 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -194,9 +194,13 @@ public class PurpurWorldConfig { +@@ -191,9 +191,13 @@ public class PurpurWorldConfig { public boolean lavaInfinite = false; public int lavaInfiniteRequiredSources = 2; diff --git a/patches/server/0065-Add-player-death-exp-control-options.patch b/patches/server/0065-Add-player-death-exp-control-options.patch index 373e7d364..65acf9a0a 100644 --- a/patches/server/0065-Add-player-death-exp-control-options.patch +++ b/patches/server/0065-Add-player-death-exp-control-options.patch @@ -40,20 +40,24 @@ index 721767812c765ac70c66f5445950c39167f344de..3fd54f7d0f3372d83ccd135db44870fb return 0; } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 92de2b4521ff5b462f7ff93c05a3f13d8e8c21f3..c29e6acfd2dce0b8483ac324a1720d2cdb38d109 100644 +index 3485b925d113a2619601a696acded3a16f9985f5..a54fbb952a3334350453ee6df1e6954798f66876 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -146,6 +146,13 @@ public class PurpurWorldConfig { - } - } - +@@ -141,6 +141,8 @@ public class PurpurWorldConfig { + public boolean idleTimeoutUpdateTabList = false; + public int playerSpawnInvulnerableTicks = 60; + public boolean playerInvulnerableWhileAcceptingResourcePack = false; + public String playerDeathExpDropEquation = "expLevel * 7"; + public int playerDeathExpDropMax = 100; -+ private void playerDeathExpSettings() { + private void playerSettings() { + idleTimeoutKick = getBoolean("gameplay-mechanics.player.idle-timeout.kick-if-idle", idleTimeoutKick); + idleTimeoutTickNearbyEntities = getBoolean("gameplay-mechanics.player.idle-timeout.tick-nearby-entities", idleTimeoutTickNearbyEntities); +@@ -148,6 +150,8 @@ public class PurpurWorldConfig { + idleTimeoutUpdateTabList = getBoolean("gameplay-mechanics.player.idle-timeout.update-tab-list", idleTimeoutUpdateTabList); + playerSpawnInvulnerableTicks = getInt("gameplay-mechanics.player.spawn-invulnerable-ticks", playerSpawnInvulnerableTicks); + playerInvulnerableWhileAcceptingResourcePack = getBoolean("gameplay-mechanics.player.invulnerable-while-accepting-resource-pack", playerInvulnerableWhileAcceptingResourcePack); + playerDeathExpDropEquation = getString("gameplay-mechanics.player.exp-dropped-on-death.equation", playerDeathExpDropEquation); + playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax); -+ } -+ - public boolean idleTimeoutKick = true; - public boolean idleTimeoutTickNearbyEntities = true; - public boolean idleTimeoutCountAsSleeping = false; + } + + public boolean silkTouchEnabled = false; diff --git a/patches/server/0066-Configurable-void-damage-height-and-damage.patch b/patches/server/0066-Configurable-void-damage-height-and-damage.patch index e8fc1a2db..f0284a4e2 100644 --- a/patches/server/0066-Configurable-void-damage-height-and-damage.patch +++ b/patches/server/0066-Configurable-void-damage-height-and-damage.patch @@ -31,10 +31,10 @@ index 59988294eeba527ab28765ab2482e477802f5240..fda3a3f8fd354aa6dcb0696f0381a6dd protected void updateSwingTime() { diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index c29e6acfd2dce0b8483ac324a1720d2cdb38d109..ed53228bc74cf4429aa7ef65de4ece47a437e99f 100644 +index a54fbb952a3334350453ee6df1e6954798f66876..0e2f3e1ed22c72e8089d7c41c2cd2e55614416a3 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -77,11 +77,15 @@ public class PurpurWorldConfig { +@@ -181,11 +181,15 @@ public class PurpurWorldConfig { public boolean entitiesPickUpLootBypassMobGriefing = false; public boolean milkCuresBadOmen = true; public double tridentLoyaltyVoidReturnHeight = 0.0D; @@ -49,4 +49,4 @@ index c29e6acfd2dce0b8483ac324a1720d2cdb38d109..ed53228bc74cf4429aa7ef65de4ece47 + voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); } - public double minecartMaxSpeed = 0.4D; + public boolean farmlandGetsMoistFromBelow = false; diff --git a/patches/server/0068-Dispenser-curse-of-binding-protection.patch b/patches/server/0068-Dispenser-curse-of-binding-protection.patch index 01705c5ea..9d9c38d0c 100644 --- a/patches/server/0068-Dispenser-curse-of-binding-protection.patch +++ b/patches/server/0068-Dispenser-curse-of-binding-protection.patch @@ -43,11 +43,11 @@ index aab4a63e61aced51b1b6c885fd8b8426a4f14408..ad095c6bc7e00d286c83e37f84d8ed5d // CraftBukkit start Level world = pointer.getLevel(); diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index ed53228bc74cf4429aa7ef65de4ece47a437e99f..1266ddfe01e30923189633b11301465118c47581 100644 +index 0e2f3e1ed22c72e8089d7c41c2cd2e55614416a3..d876899a14de21498055fe776907241c075ab009 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -198,6 +198,11 @@ public class PurpurWorldConfig { - }); +@@ -192,6 +192,11 @@ public class PurpurWorldConfig { + voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); } + public boolean dispenserApplyCursedArmor = true; diff --git a/patches/server/0069-Add-option-for-boats-to-eject-players-on-land.patch b/patches/server/0069-Add-option-for-boats-to-eject-players-on-land.patch index 1c9b30f6e..ee11dbdde 100644 --- a/patches/server/0069-Add-option-for-boats-to-eject-players-on-land.patch +++ b/patches/server/0069-Add-option-for-boats-to-eject-players-on-land.patch @@ -17,18 +17,18 @@ index aa7c022c4faade23bd9061311d4152cf845d3331..d4a19fc38027717e43353bc62ef23e56 } else { return Boat.Status.IN_AIR; diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 1266ddfe01e30923189633b11301465118c47581..59c0d2640042f1070d7a4818209c6bdd17afb03c 100644 +index d876899a14de21498055fe776907241c075ab009..203e491dd43c39dbbf60e53aca7bb32e22f16fbb 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -73,6 +73,7 @@ public class PurpurWorldConfig { - armorstandStepHeight = (float) getDouble("gameplay-mechanics.armorstand.step-height", armorstandStepHeight); +@@ -177,6 +177,7 @@ public class PurpurWorldConfig { + }); } + public boolean boatEjectPlayersOnLand = false; public boolean disableDropsOnCrammingDeath = false; public boolean entitiesPickUpLootBypassMobGriefing = false; public boolean milkCuresBadOmen = true; -@@ -80,6 +81,7 @@ public class PurpurWorldConfig { +@@ -184,6 +185,7 @@ public class PurpurWorldConfig { public double voidDamageHeight = -64.0D; public double voidDamageDealt = 4.0D; private void miscGameplayMechanicsSettings() { diff --git a/patches/server/0070-Mending-mends-most-damages-equipment-first.patch b/patches/server/0070-Mending-mends-most-damages-equipment-first.patch index dfdf0950a..b2bb0968b 100644 --- a/patches/server/0070-Mending-mends-most-damages-equipment-first.patch +++ b/patches/server/0070-Mending-mends-most-damages-equipment-first.patch @@ -73,18 +73,18 @@ index e246bf034a86deba5a15e7c639f5e08213fe7eee..585b29a214d0306ac2d6a170125270c1 Entry entry = getRandomItemWith(enchantment, entityliving); return entry != null ? entry.getValue() : ItemStack.EMPTY; diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 59c0d2640042f1070d7a4818209c6bdd17afb03c..35b05b753ebbcecb887b093647a2a4bf6f439df7 100644 +index 203e491dd43c39dbbf60e53aca7bb32e22f16fbb..99b021c43290309a96dfa0976c7d87f8f938d427 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -73,6 +73,7 @@ public class PurpurWorldConfig { - armorstandStepHeight = (float) getDouble("gameplay-mechanics.armorstand.step-height", armorstandStepHeight); +@@ -177,6 +177,7 @@ public class PurpurWorldConfig { + }); } + public boolean useBetterMending = false; public boolean boatEjectPlayersOnLand = false; public boolean disableDropsOnCrammingDeath = false; public boolean entitiesPickUpLootBypassMobGriefing = false; -@@ -81,6 +82,7 @@ public class PurpurWorldConfig { +@@ -185,6 +186,7 @@ public class PurpurWorldConfig { public double voidDamageHeight = -64.0D; public double voidDamageDealt = 4.0D; private void miscGameplayMechanicsSettings() { diff --git a/patches/server/0072-Implement-elytra-settings.patch b/patches/server/0072-Implement-elytra-settings.patch index 188a50bb9..9dc202541 100644 --- a/patches/server/0072-Implement-elytra-settings.patch +++ b/patches/server/0072-Implement-elytra-settings.patch @@ -99,11 +99,11 @@ index 510ed67a7de2b503ab8b01db57ed09ee33b0d825..3f53dc8f250ad3f7616ce7ef0a2353ca entityhuman.startAutoSpinAttack(20); if (entityhuman.isOnGround()) { diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 35b05b753ebbcecb887b093647a2a4bf6f439df7..7ea265ced069fa0121a8ca8b8f436957527494ee 100644 +index 99b021c43290309a96dfa0976c7d87f8f938d427..f0b7a5616040cb7d7f88bd98f43abf364b18343f 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -92,6 +92,19 @@ public class PurpurWorldConfig { - voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); +@@ -73,6 +73,19 @@ public class PurpurWorldConfig { + armorstandStepHeight = (float) getDouble("gameplay-mechanics.armorstand.step-height", armorstandStepHeight); } + public int elytraDamagePerSecond = 1; diff --git a/patches/server/0073-Item-entity-immunities.patch b/patches/server/0073-Item-entity-immunities.patch index 2b8581c38..0c7faf431 100644 --- a/patches/server/0073-Item-entity-immunities.patch +++ b/patches/server/0073-Item-entity-immunities.patch @@ -93,10 +93,10 @@ index 158719d46c96bb733a00e08c8285f41a48406abf..623a8b38b9d0ccbfe807afe328495b19 + // Purpur end } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 7ea265ced069fa0121a8ca8b8f436957527494ee..d733d01678689107449fcad0b94171799de2a626 100644 +index f0b7a5616040cb7d7f88bd98f43abf364b18343f..59096e683f1ed1675d142a9a737519f3f7cdc89a 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -105,6 +105,49 @@ public class PurpurWorldConfig { +@@ -86,6 +86,49 @@ public class PurpurWorldConfig { elytraDamagePerTridentBoost = getInt("gameplay-mechanics.elytra.damage-per-boost.trident", elytraDamagePerTridentBoost); } diff --git a/patches/server/0075-Configurable-jockey-options.patch b/patches/server/0075-Configurable-jockey-options.patch index 07a691c5e..4a81d5a43 100644 --- a/patches/server/0075-Configurable-jockey-options.patch +++ b/patches/server/0075-Configurable-jockey-options.patch @@ -167,10 +167,10 @@ index 04d09123f70a192f1283c0d7e8a8254f3d30889a..43ef93d2c0c59e0d7021ee9aa2b44345 @Override diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index d733d01678689107449fcad0b94171799de2a626..999c73c5a3fca531cc886025865df1464b8f80da 100644 +index 59096e683f1ed1675d142a9a737519f3f7cdc89a..d3796ea8bb8ad36a79d79a06ee250456ce541e23 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -499,6 +499,9 @@ public class PurpurWorldConfig { +@@ -493,6 +493,9 @@ public class PurpurWorldConfig { public boolean drownedRidableInWater = false; public double drownedMaxHealth = 20.0D; public double drownedSpawnReinforcements = 0.1D; @@ -180,7 +180,7 @@ index d733d01678689107449fcad0b94171799de2a626..999c73c5a3fca531cc886025865df146 private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -509,6 +512,9 @@ public class PurpurWorldConfig { +@@ -503,6 +506,9 @@ public class PurpurWorldConfig { } drownedMaxHealth = getDouble("mobs.drowned.attributes.max_health", drownedMaxHealth); drownedSpawnReinforcements = getDouble("mobs.drowned.attributes.spawn_reinforcements", drownedSpawnReinforcements); @@ -190,7 +190,7 @@ index d733d01678689107449fcad0b94171799de2a626..999c73c5a3fca531cc886025865df146 } public boolean elderGuardianRidable = false; -@@ -721,6 +727,9 @@ public class PurpurWorldConfig { +@@ -715,6 +721,9 @@ public class PurpurWorldConfig { public boolean huskRidableInWater = false; public double huskMaxHealth = 20.0D; public double huskSpawnReinforcements = 0.1D; @@ -200,7 +200,7 @@ index d733d01678689107449fcad0b94171799de2a626..999c73c5a3fca531cc886025865df146 private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -731,6 +740,9 @@ public class PurpurWorldConfig { +@@ -725,6 +734,9 @@ public class PurpurWorldConfig { } huskMaxHealth = getDouble("mobs.husk.attributes.max_health", huskMaxHealth); huskSpawnReinforcements = getDouble("mobs.husk.attributes.spawn_reinforcements", huskSpawnReinforcements); @@ -210,7 +210,7 @@ index d733d01678689107449fcad0b94171799de2a626..999c73c5a3fca531cc886025865df146 } public boolean illusionerRidable = false; -@@ -1435,6 +1447,9 @@ public class PurpurWorldConfig { +@@ -1429,6 +1441,9 @@ public class PurpurWorldConfig { public boolean zombieRidableInWater = false; public double zombieMaxHealth = 20.0D; public double zombieSpawnReinforcements = 0.1D; @@ -220,7 +220,7 @@ index d733d01678689107449fcad0b94171799de2a626..999c73c5a3fca531cc886025865df146 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -1445,6 +1460,9 @@ public class PurpurWorldConfig { +@@ -1439,6 +1454,9 @@ public class PurpurWorldConfig { } zombieMaxHealth = getDouble("mobs.zombie.attributes.max_health", zombieMaxHealth); zombieSpawnReinforcements = getDouble("mobs.zombie.attributes.spawn_reinforcements", zombieSpawnReinforcements); @@ -230,7 +230,7 @@ index d733d01678689107449fcad0b94171799de2a626..999c73c5a3fca531cc886025865df146 } public boolean zombieHorseRidableInWater = false; -@@ -1478,6 +1496,9 @@ public class PurpurWorldConfig { +@@ -1472,6 +1490,9 @@ public class PurpurWorldConfig { public boolean zombieVillagerRidableInWater = false; public double zombieVillagerMaxHealth = 20.0D; public double zombieVillagerSpawnReinforcements = 0.1D; @@ -240,7 +240,7 @@ index d733d01678689107449fcad0b94171799de2a626..999c73c5a3fca531cc886025865df146 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -1488,12 +1509,18 @@ public class PurpurWorldConfig { +@@ -1482,12 +1503,18 @@ public class PurpurWorldConfig { } zombieVillagerMaxHealth = getDouble("mobs.zombie_villager.attributes.max_health", zombieVillagerMaxHealth); zombieVillagerSpawnReinforcements = getDouble("mobs.zombie_villager.attributes.spawn_reinforcements", zombieVillagerSpawnReinforcements); @@ -259,7 +259,7 @@ index d733d01678689107449fcad0b94171799de2a626..999c73c5a3fca531cc886025865df146 private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -1504,5 +1531,8 @@ public class PurpurWorldConfig { +@@ -1498,5 +1525,8 @@ public class PurpurWorldConfig { } zombifiedPiglinMaxHealth = getDouble("mobs.zombified_piglin.attributes.max_health", zombifiedPiglinMaxHealth); zombifiedPiglinSpawnReinforcements = getDouble("mobs.zombified_piglin.attributes.spawn_reinforcements", zombifiedPiglinSpawnReinforcements); diff --git a/patches/server/0076-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch b/patches/server/0076-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch index 1ff6c3e5b..cb4cb9b26 100644 --- a/patches/server/0076-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch +++ b/patches/server/0076-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch @@ -258,10 +258,10 @@ index 359f5d01d144121e0ea129aebc45b3e796c16bf7..fcb383cea17217b6ee26fcd8b59e5ce6 private float speed = 0.1F; diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 999c73c5a3fca531cc886025865df1464b8f80da..99803a6bc3d63b31ddb2c137ba9ea311f955b9c9 100644 +index d3796ea8bb8ad36a79d79a06ee250456ce541e23..f8a0044435e8c20395b8bc6700c625b391ca1a9e 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -912,6 +912,9 @@ public class PurpurWorldConfig { +@@ -906,6 +906,9 @@ public class PurpurWorldConfig { public int phantomFlameFireTime = 8; public boolean phantomAllowGriefing = false; public double phantomMaxHealth = 20.0D; @@ -271,7 +271,7 @@ index 999c73c5a3fca531cc886025865df1464b8f80da..99803a6bc3d63b31ddb2c137ba9ea311 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -925,6 +928,9 @@ public class PurpurWorldConfig { +@@ -919,6 +922,9 @@ public class PurpurWorldConfig { set("mobs.phantom.attributes.max_health", oldValue); } phantomMaxHealth = getDouble("mobs.phantom.attributes.max_health", phantomMaxHealth); diff --git a/patches/server/0077-Add-phantom-spawning-options.patch b/patches/server/0077-Add-phantom-spawning-options.patch index f85fc9c77..ab3e0f91f 100644 --- a/patches/server/0077-Add-phantom-spawning-options.patch +++ b/patches/server/0077-Add-phantom-spawning-options.patch @@ -189,10 +189,10 @@ index 79504dc3448402e73b09c4232b1fd0488872cf68..5c7683058b79953aa4f7427d7654b7e4 } } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 99803a6bc3d63b31ddb2c137ba9ea311f955b9c9..7eda42e4ffd91e1619dc59acdb60b9a7ef83f0c9 100644 +index f8a0044435e8c20395b8bc6700c625b391ca1a9e..9b94df72ec46c37afc26f84e9faf484bef213dbb 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -915,6 +915,18 @@ public class PurpurWorldConfig { +@@ -909,6 +909,18 @@ public class PurpurWorldConfig { public double phantomAttackedByCrystalRadius = 0.0D; public float phantomAttackedByCrystalDamage = 1.0F; public double phantomOrbitCrystalRadius = 0.0D; @@ -211,7 +211,7 @@ index 99803a6bc3d63b31ddb2c137ba9ea311f955b9c9..7eda42e4ffd91e1619dc59acdb60b9a7 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -931,6 +943,18 @@ public class PurpurWorldConfig { +@@ -925,6 +937,18 @@ public class PurpurWorldConfig { phantomAttackedByCrystalRadius = getDouble("mobs.phantom.attacked-by-crystal-range", phantomAttackedByCrystalRadius); phantomAttackedByCrystalDamage = (float) getDouble("mobs.phantom.attacked-by-crystal-damage", phantomAttackedByCrystalDamage); phantomOrbitCrystalRadius = getDouble("mobs.phantom.orbit-crystal-radius", phantomOrbitCrystalRadius); diff --git a/patches/server/0078-Implement-bed-explosion-options.patch b/patches/server/0078-Implement-bed-explosion-options.patch index 08ded7eea..30b37cc21 100644 --- a/patches/server/0078-Implement-bed-explosion-options.patch +++ b/patches/server/0078-Implement-bed-explosion-options.patch @@ -18,7 +18,7 @@ index 163a7861f987c3832aac51cc6df950c768546731..cfe4cdbd28ff11ea2781d47fe6d8c2de } else if ((Boolean) state.getValue(BedBlock.OCCUPIED)) { if (!this.kickVillagerOutOfBed(world, pos)) { diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 7eda42e4ffd91e1619dc59acdb60b9a7ef83f0c9..ce0e2f9eb940e1e79d129667bc6444b83ca4b235 100644 +index 9b94df72ec46c37afc26f84e9faf484bef213dbb..71b2eb0695a208a2d746589b4c60127a6c8cf91c 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -4,6 +4,7 @@ import net.minecraft.core.Registry; @@ -38,8 +38,8 @@ index 7eda42e4ffd91e1619dc59acdb60b9a7ef83f0c9..ce0e2f9eb940e1e79d129667bc6444b8 import static net.pl3x.purpur.PurpurConfig.log; public class PurpurWorldConfig { -@@ -258,6 +261,22 @@ public class PurpurWorldConfig { - }); +@@ -252,6 +255,22 @@ public class PurpurWorldConfig { + voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); } + public boolean bedExplode = true; diff --git a/patches/server/0079-Implement-respawn-anchor-explosion-options.patch b/patches/server/0079-Implement-respawn-anchor-explosion-options.patch index 81c0629e8..233d4fa5f 100644 --- a/patches/server/0079-Implement-respawn-anchor-explosion-options.patch +++ b/patches/server/0079-Implement-respawn-anchor-explosion-options.patch @@ -18,10 +18,10 @@ index af4eb4a8814491afef449a2874521636957d7557..365c28300ecfbe0161716972adf22a8a public static boolean canSetSpawn(Level world) { diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index ce0e2f9eb940e1e79d129667bc6444b83ca4b235..a62fb5a9655e29d4327ebf5725e93dded5f02113 100644 +index 71b2eb0695a208a2d746589b4c60127a6c8cf91c..3e76349fb02722653c5765915941386f1fea3e00 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -298,6 +298,22 @@ public class PurpurWorldConfig { +@@ -292,6 +292,22 @@ public class PurpurWorldConfig { lavaSpeedNotNether = getInt("blocks.lava.speed.not-nether", lavaSpeedNotNether); } diff --git a/patches/server/0082-Entity-lifespan.patch b/patches/server/0082-Entity-lifespan.patch index d4792379b..d5a2ab684 100644 --- a/patches/server/0082-Entity-lifespan.patch +++ b/patches/server/0082-Entity-lifespan.patch @@ -89,10 +89,10 @@ index 45c9c4d751a51a524ff881d9fe3c1a48d141ba54..568c11075c7a45f210bb2ddc81c313d0 } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index a62fb5a9655e29d4327ebf5725e93dded5f02113..059da9c67be01f5d495cca4828a639355b5668d4 100644 +index 3e76349fb02722653c5765915941386f1fea3e00..f495a57ae90d5ca10d63a1f2e7fc6f215b1b04ec 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -108,6 +108,11 @@ public class PurpurWorldConfig { +@@ -89,6 +89,11 @@ public class PurpurWorldConfig { elytraDamagePerTridentBoost = getInt("gameplay-mechanics.elytra.damage-per-boost.trident", elytraDamagePerTridentBoost); } diff --git a/patches/server/0083-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch b/patches/server/0083-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch index 39fea3b6f..c40dddbf4 100644 --- a/patches/server/0083-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch +++ b/patches/server/0083-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch @@ -55,18 +55,22 @@ index 5de1f9729ad0d2857e4c25bb3b9bf3f575217e99..f4eb8ea592e259bca1b961bbbf3f99c9 } } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 059da9c67be01f5d495cca4828a639355b5668d4..679bd772139a6b03eb346ebd4e080bd0167dc294 100644 +index f495a57ae90d5ca10d63a1f2e7fc6f215b1b04ec..f798517c786d8d887786deafa5c9c82a1f785114 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -243,6 +243,11 @@ public class PurpurWorldConfig { +@@ -207,6 +207,7 @@ public class PurpurWorldConfig { + public boolean playerInvulnerableWhileAcceptingResourcePack = false; + public String playerDeathExpDropEquation = "expLevel * 7"; + public int playerDeathExpDropMax = 100; ++ public boolean teleportIfOutsideBorder = false; + private void playerSettings() { + idleTimeoutKick = getBoolean("gameplay-mechanics.player.idle-timeout.kick-if-idle", idleTimeoutKick); + idleTimeoutTickNearbyEntities = getBoolean("gameplay-mechanics.player.idle-timeout.tick-nearby-entities", idleTimeoutTickNearbyEntities); +@@ -216,6 +217,7 @@ public class PurpurWorldConfig { playerInvulnerableWhileAcceptingResourcePack = getBoolean("gameplay-mechanics.player.invulnerable-while-accepting-resource-pack", playerInvulnerableWhileAcceptingResourcePack); + 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); } -+ public boolean teleportIfOutsideBorder = false; -+ private void teleportIfOutsideBorder() { -+ teleportIfOutsideBorder = getBoolean("gameplay-mechanics.player.teleport-if-outside-border", teleportIfOutsideBorder); -+ } -+ public boolean silkTouchEnabled = false; - public String silkTouchSpawnerName = "Spawner"; - public List silkTouchSpawnerLore = new ArrayList<>(); diff --git a/patches/server/0084-Squid-EAR-immunity.patch b/patches/server/0084-Squid-EAR-immunity.patch index 273f75a9f..5c1c1d917 100644 --- a/patches/server/0084-Squid-EAR-immunity.patch +++ b/patches/server/0084-Squid-EAR-immunity.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Squid EAR immunity diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 679bd772139a6b03eb346ebd4e080bd0167dc294..70a89abe116da4e9267988b40cb141ad937b1a3c 100644 +index f798517c786d8d887786deafa5c9c82a1f785114..a6da4fb3799b9c3ce624f90479e7546fc071b9a5 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -1254,6 +1254,7 @@ public class PurpurWorldConfig { +@@ -1245,6 +1245,7 @@ public class PurpurWorldConfig { public boolean squidRidable = false; public double squidMaxHealth = 10.0D; @@ -16,7 +16,7 @@ index 679bd772139a6b03eb346ebd4e080bd0167dc294..70a89abe116da4e9267988b40cb141ad private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); if (PurpurConfig.version < 10) { -@@ -1262,6 +1263,7 @@ public class PurpurWorldConfig { +@@ -1253,6 +1254,7 @@ public class PurpurWorldConfig { set("mobs.squid.attributes.max_health", oldValue); } squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); diff --git a/patches/server/0087-Phantoms-burn-in-light.patch b/patches/server/0087-Phantoms-burn-in-light.patch index cb9bfff3a..e60d1b24c 100644 --- a/patches/server/0087-Phantoms-burn-in-light.patch +++ b/patches/server/0087-Phantoms-burn-in-light.patch @@ -47,10 +47,10 @@ index fcb383cea17217b6ee26fcd8b59e5ce6a7ca0f8e..782d4499f925950d66072b63f34a828b list.sort(Comparator.comparing(Entity::getY).reversed()); // Paper - remap fix Iterator iterator = list.iterator(); diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 70a89abe116da4e9267988b40cb141ad937b1a3c..d29600f27eeacf831ec532a79cdd280b2253574f 100644 +index a6da4fb3799b9c3ce624f90479e7546fc071b9a5..ef7dc4fe0eb958e0b8faca8768a18054d0adcf15 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -972,6 +972,9 @@ public class PurpurWorldConfig { +@@ -963,6 +963,9 @@ public class PurpurWorldConfig { public int phantomSpawnOverheadRadius = 10; public int phantomSpawnMinPerAttempt = 1; public int phantomSpawnMaxPerAttempt = -1; @@ -60,7 +60,7 @@ index 70a89abe116da4e9267988b40cb141ad937b1a3c..d29600f27eeacf831ec532a79cdd280b private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1000,6 +1003,9 @@ public class PurpurWorldConfig { +@@ -991,6 +994,9 @@ public class PurpurWorldConfig { phantomSpawnOverheadRadius = getInt("mobs.phantom.spawn.overhead.radius", phantomSpawnOverheadRadius); phantomSpawnMinPerAttempt = getInt("mobs.phantom.spawn.per-attempt.min", phantomSpawnMinPerAttempt); phantomSpawnMaxPerAttempt = getInt("mobs.phantom.spawn.per-attempt.max", phantomSpawnMaxPerAttempt); diff --git a/patches/server/0088-Configurable-villager-breeding.patch b/patches/server/0088-Configurable-villager-breeding.patch index 93deed858..85ff8993b 100644 --- a/patches/server/0088-Configurable-villager-breeding.patch +++ b/patches/server/0088-Configurable-villager-breeding.patch @@ -18,10 +18,10 @@ index 5e100dbdbd6cfb4aa34b0d6b1ce0913899f60b7c..1e05cc98a332e5b115c4670e5331e679 private boolean hungry() { diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index d29600f27eeacf831ec532a79cdd280b2253574f..e047403632621a979c3e8d3859c43be8a70d3b92 100644 +index ef7dc4fe0eb958e0b8faca8768a18054d0adcf15..ad02fcc56677635448ec4b89932fe58bb676408e 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -1398,6 +1398,7 @@ public class PurpurWorldConfig { +@@ -1389,6 +1389,7 @@ public class PurpurWorldConfig { public boolean villagerCanBeLeashed = false; public int villagerSpawnIronGolemRadius = 0; public int villagerSpawnIronGolemLimit = 0; @@ -29,7 +29,7 @@ index d29600f27eeacf831ec532a79cdd280b2253574f..e047403632621a979c3e8d3859c43be8 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1414,6 +1415,7 @@ public class PurpurWorldConfig { +@@ -1405,6 +1406,7 @@ public class PurpurWorldConfig { villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); villagerSpawnIronGolemRadius = getInt("mobs.villager.spawn-iron-golem.radius", villagerSpawnIronGolemRadius); villagerSpawnIronGolemLimit = getInt("mobs.villager.spawn-iron-golem.limit", villagerSpawnIronGolemLimit); diff --git a/patches/server/0089-Redstone-deactivates-spawners.patch b/patches/server/0089-Redstone-deactivates-spawners.patch index 8729b2a2b..c8c0fef5c 100644 --- a/patches/server/0089-Redstone-deactivates-spawners.patch +++ b/patches/server/0089-Redstone-deactivates-spawners.patch @@ -17,11 +17,11 @@ index 9228c0bc797fb95c8ac949bdc568eadafee84a80..f2c9f841d397f445cd3d0420f19e765c } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index e047403632621a979c3e8d3859c43be8a70d3b92..9d35930b8e5f27b0cf65b347dfb829a09965c607 100644 +index ad02fcc56677635448ec4b89932fe58bb676408e..bb4a7534911b9718ec383f464ae2853a8efea2a2 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -1352,6 +1352,11 @@ public class PurpurWorldConfig { - tropicalFishMaxHealth = getDouble("mobs.tropical_fish.attributes.max_health", tropicalFishMaxHealth); +@@ -322,6 +322,11 @@ public class PurpurWorldConfig { + signRightClickEdit = getBoolean("blocks.sign.right-click-edit", signRightClickEdit); } + public boolean spawnerDeactivateByRedstone = false; @@ -29,6 +29,6 @@ index e047403632621a979c3e8d3859c43be8a70d3b92..9d35930b8e5f27b0cf65b347dfb829a0 + spawnerDeactivateByRedstone = getBoolean("blocks.spawner.deactivate-by-redstone", spawnerDeactivateByRedstone); + } + - public boolean turtleRidable = false; - public boolean turtleRidableInWater = false; - public double turtleMaxHealth = 30.0D; + public boolean babiesAreRidable = true; + public boolean untamedTamablesAreRidable = true; + public boolean useNightVisionWhenRiding = false; diff --git a/patches/server/0090-Totems-work-in-inventory.patch b/patches/server/0090-Totems-work-in-inventory.patch index afe1dd4c5..8be41b0c2 100644 --- a/patches/server/0090-Totems-work-in-inventory.patch +++ b/patches/server/0090-Totems-work-in-inventory.patch @@ -29,18 +29,22 @@ index f4eb8ea592e259bca1b961bbbf3f99c9cb058640..c3aa354635d7e784726ec5086e652433 event.setCancelled(itemstack == null); this.level.getCraftServer().getPluginManager().callEvent(event); diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 9d35930b8e5f27b0cf65b347dfb829a09965c607..337da14979d8f209d250d98df1247434d6610472 100644 +index bb4a7534911b9718ec383f464ae2853a8efea2a2..f911e276e94016a4911e5685b3bb382f7e45f894 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -248,6 +248,11 @@ public class PurpurWorldConfig { +@@ -208,6 +208,7 @@ public class PurpurWorldConfig { + public String playerDeathExpDropEquation = "expLevel * 7"; + public int playerDeathExpDropMax = 100; + public boolean teleportIfOutsideBorder = false; ++ public boolean totemOfUndyingWorksInInventory = false; + private void playerSettings() { + idleTimeoutKick = getBoolean("gameplay-mechanics.player.idle-timeout.kick-if-idle", idleTimeoutKick); + idleTimeoutTickNearbyEntities = getBoolean("gameplay-mechanics.player.idle-timeout.tick-nearby-entities", idleTimeoutTickNearbyEntities); +@@ -218,6 +219,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); ++ totemOfUndyingWorksInInventory = getBoolean("gameplay-mechanics.player.totem-of-undying-works-in-inventory", totemOfUndyingWorksInInventory); } -+ public boolean totemOfUndyingWorksInInventory = false; -+ private void totemOfUndyingWorksInInventory() { -+ totemOfUndyingWorksInInventory = getBoolean("gameplay-mechanics.player.totem-of-undying-works-in-inventory", totemOfUndyingWorksInInventory); -+ } -+ public boolean silkTouchEnabled = false; - public String silkTouchSpawnerName = "Spawner"; - public List silkTouchSpawnerLore = new ArrayList<>(); diff --git a/patches/server/0091-Add-vindicator-johnny-spawn-chance.patch b/patches/server/0091-Add-vindicator-johnny-spawn-chance.patch index ca433edfd..98c52904b 100644 --- a/patches/server/0091-Add-vindicator-johnny-spawn-chance.patch +++ b/patches/server/0091-Add-vindicator-johnny-spawn-chance.patch @@ -30,10 +30,10 @@ index 76e6ea34db3942e9dd7646ad7ca1259f4387a4d8..9096c40ad5784d9097e889f0f43b6cf1 } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 337da14979d8f209d250d98df1247434d6610472..8feb4bab5e11f6240e6224f5e9a1ffbcebf8e0f6 100644 +index f911e276e94016a4911e5685b3bb382f7e45f894..6697c7b15917c3d7213ccf329b564372239a5228 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -1431,6 +1431,7 @@ public class PurpurWorldConfig { +@@ -1419,6 +1419,7 @@ public class PurpurWorldConfig { public boolean vindicatorRidable = false; public boolean vindicatorRidableInWater = false; public double vindicatorMaxHealth = 24.0D; @@ -41,7 +41,7 @@ index 337da14979d8f209d250d98df1247434d6610472..8feb4bab5e11f6240e6224f5e9a1ffbc private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -1440,6 +1441,7 @@ public class PurpurWorldConfig { +@@ -1428,6 +1429,7 @@ public class PurpurWorldConfig { set("mobs.vindicator.attributes.max_health", oldValue); } vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); diff --git a/patches/server/0093-Dispensers-place-anvils-option.patch b/patches/server/0093-Dispensers-place-anvils-option.patch index 5a10fc1d9..c358e1a11 100644 --- a/patches/server/0093-Dispensers-place-anvils-option.patch +++ b/patches/server/0093-Dispensers-place-anvils-option.patch @@ -41,10 +41,10 @@ index 92623ae25249d63efb92be8bd6c95228f9155ad2..20bf6d01046488eff53a109f5239351a static void setEntityPokingOutOfBlock(BlockSource pointer, Entity entity, Direction direction) { diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 8feb4bab5e11f6240e6224f5e9a1ffbcebf8e0f6..b17e156f543f408ae60d59766f2a35af87b8844a 100644 +index 6697c7b15917c3d7213ccf329b564372239a5228..b67352c0f4d538ba4fc8dc41590fb4f871d46d3b 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -293,8 +293,10 @@ public class PurpurWorldConfig { +@@ -281,8 +281,10 @@ public class PurpurWorldConfig { } public boolean dispenserApplyCursedArmor = true; diff --git a/patches/server/0094-Allow-anvil-colors.patch b/patches/server/0094-Allow-anvil-colors.patch index e018cefbf..07a6820ea 100644 --- a/patches/server/0094-Allow-anvil-colors.patch +++ b/patches/server/0094-Allow-anvil-colors.patch @@ -37,11 +37,11 @@ index 2db80c986e1dbd4aa9be288cc802f650169dc11a..1d186f9e3c2b10420abf8b3334cbcc42 } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index b17e156f543f408ae60d59766f2a35af87b8844a..7f19823c5044ee056ec45c6db94f9cce665ba4c6 100644 +index b67352c0f4d538ba4fc8dc41590fb4f871d46d3b..f9d66b7aa5d2c13190f438b14bd4bf6626e2c123 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -276,6 +276,11 @@ public class PurpurWorldConfig { - }); +@@ -264,6 +264,11 @@ public class PurpurWorldConfig { + voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); } + public boolean anvilAllowColors = false; diff --git a/patches/server/0095-Add-no-random-tick-block-list.patch b/patches/server/0095-Add-no-random-tick-block-list.patch index 73aee8bc9..7a9f30126 100644 --- a/patches/server/0095-Add-no-random-tick-block-list.patch +++ b/patches/server/0095-Add-no-random-tick-block-list.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add no-random-tick block list diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index e98cfb02e6432992259c23d3e81aa8cfef6882b3..34be3abec773b4b2bcd9b3faca33d2c72ef4d895 100644 +index 14c3e9fcdfb088d3fe0a15266b50a7da82a5d240..0ef7b405ad9174045128fb5445f0bc0e22a3f2e2 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -318,7 +318,7 @@ public class ServerLevel extends net.minecraft.world.level.Level implements Worl @@ -35,7 +35,7 @@ index a107304351381d68fdaa35a4d7ff214e6c1546a6..6e5dcf3c8a537729a18c085ebb5ab46b } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 7f19823c5044ee056ec45c6db94f9cce665ba4c6..ea0e9c3ff13888899952b4bb8c04d20ebd5de542 100644 +index f9d66b7aa5d2c13190f438b14bd4bf6626e2c123..7d7644863256cc69077292fd1d2fdc38f9e378f1 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -12,8 +12,10 @@ import org.bukkit.configuration.ConfigurationSection; @@ -49,8 +49,8 @@ index 7f19823c5044ee056ec45c6db94f9cce665ba4c6..ea0e9c3ff13888899952b4bb8c04d20e import java.util.logging.Level; import static net.pl3x.purpur.PurpurConfig.log; -@@ -243,6 +245,28 @@ public class PurpurWorldConfig { - playerInvulnerableWhileAcceptingResourcePack = getBoolean("gameplay-mechanics.player.invulnerable-while-accepting-resource-pack", playerInvulnerableWhileAcceptingResourcePack); +@@ -264,6 +266,28 @@ public class PurpurWorldConfig { + voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); } + public Set noRandomTickBlocks = new HashSet<>(); @@ -75,6 +75,6 @@ index 7f19823c5044ee056ec45c6db94f9cce665ba4c6..ea0e9c3ff13888899952b4bb8c04d20e + }); + } + - public boolean teleportIfOutsideBorder = false; - private void teleportIfOutsideBorder() { - teleportIfOutsideBorder = getBoolean("gameplay-mechanics.player.teleport-if-outside-border", teleportIfOutsideBorder); + public boolean anvilAllowColors = false; + private void anvilSettings() { + anvilAllowColors = getBoolean("blocks.anvil.allow-colors", anvilAllowColors); diff --git a/patches/server/0096-Add-option-to-disable-dolphin-treasure-searching.patch b/patches/server/0096-Add-option-to-disable-dolphin-treasure-searching.patch index 5b025aa6d..e5b6b1429 100644 --- a/patches/server/0096-Add-option-to-disable-dolphin-treasure-searching.patch +++ b/patches/server/0096-Add-option-to-disable-dolphin-treasure-searching.patch @@ -17,10 +17,10 @@ index c372d47a929e06c8cfb0df86cf4e9bfee4d4b300..2aead13e8f879b614445715fb1912a20 } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index ea0e9c3ff13888899952b4bb8c04d20ebd5de542..e42de65078ee46de2122200bb662d4366443b4a2 100644 +index 7d7644863256cc69077292fd1d2fdc38f9e378f1..ad7b6e2df7d0579e95b7f0b82481868e21358ddb 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -539,6 +539,7 @@ public class PurpurWorldConfig { +@@ -532,6 +532,7 @@ public class PurpurWorldConfig { public float dolphinSpitSpeed = 1.0F; public float dolphinSpitDamage = 2.0F; public double dolphinMaxHealth = 10.0D; @@ -28,7 +28,7 @@ index ea0e9c3ff13888899952b4bb8c04d20ebd5de542..e42de65078ee46de2122200bb662d436 private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinSpitCooldown = getInt("mobs.dolphin.spit.cooldown", dolphinSpitCooldown); -@@ -550,6 +551,7 @@ public class PurpurWorldConfig { +@@ -543,6 +544,7 @@ public class PurpurWorldConfig { set("mobs.dolphin.attributes.max_health", oldValue); } dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth); diff --git a/patches/server/0098-Stop-squids-floating-on-top-of-water.patch b/patches/server/0098-Stop-squids-floating-on-top-of-water.patch index 53a69952a..c113c7ea4 100644 --- a/patches/server/0098-Stop-squids-floating-on-top-of-water.patch +++ b/patches/server/0098-Stop-squids-floating-on-top-of-water.patch @@ -60,10 +60,10 @@ index 120498a39b7ca7aee9763084507508d4a1c425aa..0dfc639043998cd3bd32afaaf8153459 + // Purpur } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index e42de65078ee46de2122200bb662d4366443b4a2..73955b07947852ddd2aa8bad6642cea19dc7f6c5 100644 +index ad7b6e2df7d0579e95b7f0b82481868e21358ddb..b7987fe0d7a73ed4ab0c47648f5da23f8c15560c 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -1299,6 +1299,7 @@ public class PurpurWorldConfig { +@@ -1292,6 +1292,7 @@ public class PurpurWorldConfig { public boolean squidRidable = false; public double squidMaxHealth = 10.0D; public boolean squidImmuneToEAR = true; @@ -71,7 +71,7 @@ index e42de65078ee46de2122200bb662d4366443b4a2..73955b07947852ddd2aa8bad6642cea1 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); if (PurpurConfig.version < 10) { -@@ -1308,6 +1309,7 @@ public class PurpurWorldConfig { +@@ -1301,6 +1302,7 @@ public class PurpurWorldConfig { } squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); diff --git a/patches/server/0101-Entities-can-use-portals-configuration.patch b/patches/server/0101-Entities-can-use-portals-configuration.patch index 97f7df51e..f257b6d95 100644 --- a/patches/server/0101-Entities-can-use-portals-configuration.patch +++ b/patches/server/0101-Entities-can-use-portals-configuration.patch @@ -27,10 +27,10 @@ index 3bf97664158760355263f4b3dcd48b9388d44231..70d436a272d03d1f2eb754a83f1ea7e8 public float getBlockExplosionResistance(Explosion explosion, BlockGetter world, BlockPos pos, BlockState blockState, FluidState fluidState, float max) { diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 73955b07947852ddd2aa8bad6642cea19dc7f6c5..02a249afc39239327c1bd99f40d73d6cc616644a 100644 +index b7987fe0d7a73ed4ab0c47648f5da23f8c15560c..842bc3d16f13d1a3daf663b2bdfb0135832c95da 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -82,6 +82,7 @@ public class PurpurWorldConfig { +@@ -251,6 +251,7 @@ public class PurpurWorldConfig { public boolean boatEjectPlayersOnLand = false; public boolean disableDropsOnCrammingDeath = false; public boolean entitiesPickUpLootBypassMobGriefing = false; @@ -38,7 +38,7 @@ index 73955b07947852ddd2aa8bad6642cea19dc7f6c5..02a249afc39239327c1bd99f40d73d6c public boolean milkCuresBadOmen = true; public double tridentLoyaltyVoidReturnHeight = 0.0D; public double voidDamageHeight = -64.0D; -@@ -91,6 +92,7 @@ public class PurpurWorldConfig { +@@ -260,6 +261,7 @@ public class PurpurWorldConfig { boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath); entitiesPickUpLootBypassMobGriefing = getBoolean("gameplay-mechanics.entities-pick-up-loot-bypass-mob-griefing", entitiesPickUpLootBypassMobGriefing); diff --git a/patches/server/0103-Customizable-wither-health-and-healing.patch b/patches/server/0103-Customizable-wither-health-and-healing.patch index 32a7847de..de998eb43 100644 --- a/patches/server/0103-Customizable-wither-health-and-healing.patch +++ b/patches/server/0103-Customizable-wither-health-and-healing.patch @@ -6,22 +6,10 @@ Subject: [PATCH] Customizable wither health and healing Adds the ability to customize the health of the wither, as well as the amount that it heals, and how often. diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -index 96631591db018545120ba1c9980a03eb596eb6e5..b447c1c4d7d3133e953d8f70e6720ddfba4f7553 100644 +index 96631591db018545120ba1c9980a03eb596eb6e5..9c45c0e232da2597f071081443f9db3df57b5513 100644 --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java -@@ -197,6 +197,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob - level.addFreshEntity(skull); - } - -+ @Override -+ public void initAttributes() { -+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(level.purpurConfig.witherMaxHealth); -+ } -+ - @Override - public void initAttributes() { - this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level.purpurConfig.witherMaxHealth); -@@ -499,8 +504,10 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob +@@ -499,8 +499,10 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob } } @@ -35,10 +23,10 @@ index 96631591db018545120ba1c9980a03eb596eb6e5..b447c1c4d7d3133e953d8f70e6720ddf this.bossEvent.setProgress(this.getHealth() / this.getMaxHealth()); diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 02a249afc39239327c1bd99f40d73d6cc616644a..a956362ed2b724a50c8f7023799bd3314b287020 100644 +index 842bc3d16f13d1a3daf663b2bdfb0135832c95da..8d70915300f563affb7d8ab631699c484fb9c8f8 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -1517,6 +1517,8 @@ public class PurpurWorldConfig { +@@ -1505,6 +1505,8 @@ public class PurpurWorldConfig { public boolean witherRidableInWater = false; public double witherMaxY = 256D; public double witherMaxHealth = 300.0D; @@ -47,7 +35,7 @@ index 02a249afc39239327c1bd99f40d73d6cc616644a..a956362ed2b724a50c8f7023799bd331 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -1531,6 +1533,8 @@ public class PurpurWorldConfig { +@@ -1519,6 +1521,8 @@ public class PurpurWorldConfig { set("mobs.wither.attributes.max_health", oldValue); } witherMaxHealth = getDouble("mobs.wither.attributes.max_health", witherMaxHealth); diff --git a/patches/server/0104-Allow-toggling-special-MobSpawners-per-world.patch b/patches/server/0104-Allow-toggling-special-MobSpawners-per-world.patch index 6b090d0ec..9c1b4cdcd 100644 --- a/patches/server/0104-Allow-toggling-special-MobSpawners-per-world.patch +++ b/patches/server/0104-Allow-toggling-special-MobSpawners-per-world.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Allow toggling special MobSpawners per world In vanilla, these are all hardcoded on for world type 0 (overworld) and hardcoded off for every other world type. Default config behaviour matches this. diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 34be3abec773b4b2bcd9b3faca33d2c72ef4d895..dc968864cef387d362b116a9e733859b7460f967 100644 +index 0ef7b405ad9174045128fb5445f0bc0e22a3f2e2..d10ebe9b094a0e8b62e6607a4fefaf0bcd412413 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -83,6 +83,7 @@ import net.minecraft.world.entity.MobCategory; @@ -107,7 +107,7 @@ index 1f9129180badb6df786b080edf926d04ef95125c..917a671894e16e024db941cea1845e39 this.world = new CraftWorld((ServerLevel) this, gen, env); this.ticksPerAnimalSpawns = this.getCraftServer().getTicksPerAnimalSpawns(); // CraftBukkit diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index a956362ed2b724a50c8f7023799bd3314b287020..bba3f5f0d2802d706b8b8ac17ae194157870bbf6 100644 +index 8d70915300f563affb7d8ab631699c484fb9c8f8..81b278aa74073b2e01a33635c33cb723de8cc3ad 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -8,6 +8,8 @@ import net.minecraft.world.level.Explosion; @@ -153,8 +153,8 @@ index a956362ed2b724a50c8f7023799bd3314b287020..bba3f5f0d2802d706b8b8ac17ae19415 private double getDouble(String path, double def) { PurpurConfig.config.addDefault("world-settings.default." + path, def); return PurpurConfig.config.getDouble("world-settings." + worldName + "." + path, PurpurConfig.config.getDouble("world-settings.default." + path)); -@@ -99,6 +110,21 @@ public class PurpurWorldConfig { - voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); +@@ -201,6 +212,21 @@ public class PurpurWorldConfig { + } } + public boolean catSpawning; @@ -172,6 +172,6 @@ index a956362ed2b724a50c8f7023799bd3314b287020..bba3f5f0d2802d706b8b8ac17ae19415 + villageSiegeSpawning = getBoolean("gameplay-mechanics.mob-spawning.village-sieges", predicate); + } + - public int elytraDamagePerSecond = 1; - public double elytraDamageMultiplyBySpeed = 0; - public boolean elytraIgnoreUnbreaking = false; + public boolean idleTimeoutKick = true; + public boolean idleTimeoutTickNearbyEntities = true; + public boolean idleTimeoutCountAsSleeping = false; diff --git a/patches/server/0105-Raid-cooldown-setting.patch b/patches/server/0105-Raid-cooldown-setting.patch index 1f001ce5a..7ba234769 100644 --- a/patches/server/0105-Raid-cooldown-setting.patch +++ b/patches/server/0105-Raid-cooldown-setting.patch @@ -52,10 +52,10 @@ index 45e369aa69a6b78def42b619b1b1b8259d4b30ea..de7443e7a27e51eabaed2d6d348ec8ea if (!this.raidMap.containsKey(raid.getId())) { this.raidMap.put(raid.getId(), raid); diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index bba3f5f0d2802d706b8b8ac17ae194157870bbf6..3f9602e6820e8a8e17e8e7e292a5b95b20eea697 100644 +index 81b278aa74073b2e01a33635c33cb723de8cc3ad..e708ac646839854d20f0a88a1c1b81336b0cb850 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -98,6 +98,7 @@ public class PurpurWorldConfig { +@@ -282,6 +282,7 @@ public class PurpurWorldConfig { public double tridentLoyaltyVoidReturnHeight = 0.0D; public double voidDamageHeight = -64.0D; public double voidDamageDealt = 4.0D; @@ -63,11 +63,11 @@ index bba3f5f0d2802d706b8b8ac17ae194157870bbf6..3f9602e6820e8a8e17e8e7e292a5b95b private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); -@@ -108,6 +109,7 @@ public class PurpurWorldConfig { +@@ -292,6 +293,7 @@ public class PurpurWorldConfig { tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight); voidDamageHeight = getDouble("gameplay-mechanics.void-damage-height", voidDamageHeight); voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); + raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds); } - public boolean catSpawning; + public Set noRandomTickBlocks = new HashSet<>(); diff --git a/patches/server/0106-Despawn-rate-config-options-per-projectile-type.patch b/patches/server/0106-Despawn-rate-config-options-per-projectile-type.patch index 1290ab7ed..d117000b1 100644 --- a/patches/server/0106-Despawn-rate-config-options-per-projectile-type.patch +++ b/patches/server/0106-Despawn-rate-config-options-per-projectile-type.patch @@ -271,11 +271,11 @@ index 4a11f7417b438ee5711a720aca3321c88e970b2a..46b74271ce5f614f07754db14d2a552c + // Purpur end } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 3f9602e6820e8a8e17e8e7e292a5b95b20eea697..2d46a4f3a806764155f2e819e103491abd9a3fdf 100644 +index e708ac646839854d20f0a88a1c1b81336b0cb850..6b44a1dce76913d2351c4491babef0c9ce59e5bf 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -89,6 +89,35 @@ public class PurpurWorldConfig { - armorstandStepHeight = (float) getDouble("gameplay-mechanics.armorstand.step-height", armorstandStepHeight); +@@ -250,6 +250,35 @@ public class PurpurWorldConfig { + totemOfUndyingWorksInInventory = getBoolean("gameplay-mechanics.player.totem-of-undying-works-in-inventory", totemOfUndyingWorksInInventory); } + public int dragonFireballDespawnRate = -1; @@ -307,6 +307,6 @@ index 3f9602e6820e8a8e17e8e7e292a5b95b20eea697..2d46a4f3a806764155f2e819e103491a + witherSkullDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.wither_skull", witherSkullDespawnRate); + } + - public boolean useBetterMending = false; - public boolean boatEjectPlayersOnLand = false; - public boolean disableDropsOnCrammingDeath = false; + public boolean silkTouchEnabled = false; + public String silkTouchSpawnerName = "Spawner"; + public List silkTouchSpawnerLore = new ArrayList<>(); diff --git a/patches/server/0107-Add-option-to-disable-zombie-aggressiveness-towards-.patch b/patches/server/0107-Add-option-to-disable-zombie-aggressiveness-towards-.patch index 40c60b881..786bc0a7c 100644 --- a/patches/server/0107-Add-option-to-disable-zombie-aggressiveness-towards-.patch +++ b/patches/server/0107-Add-option-to-disable-zombie-aggressiveness-towards-.patch @@ -71,10 +71,10 @@ index 77002a4c3b03e0397515fd922f14e56b8e81074a..b80f7c71cbf7b10bda6fac3cfe673ac7 this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, true, false, Turtle.BABY_ON_LAND_SELECTOR)); } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 2d46a4f3a806764155f2e819e103491abd9a3fdf..a55906d57840a471078a411f706b0f353462b03f 100644 +index 6b44a1dce76913d2351c4491babef0c9ce59e5bf..eb9c4b2b3c5fdcb85e4e66afc745d62bf9cc2726 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -1645,6 +1645,7 @@ public class PurpurWorldConfig { +@@ -1633,6 +1633,7 @@ public class PurpurWorldConfig { public boolean zombieJockeyOnlyBaby = true; public double zombieJockeyChance = 0.05D; public boolean zombieJockeyTryExistingChickens = true; @@ -82,7 +82,7 @@ index 2d46a4f3a806764155f2e819e103491abd9a3fdf..a55906d57840a471078a411f706b0f35 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -1658,6 +1659,7 @@ public class PurpurWorldConfig { +@@ -1646,6 +1647,7 @@ public class PurpurWorldConfig { zombieJockeyOnlyBaby = getBoolean("mobs.zombie.jockey.only-babies", zombieJockeyOnlyBaby); zombieJockeyChance = getDouble("mobs.zombie.jockey.chance", zombieJockeyChance); zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens); diff --git a/patches/server/0108-Persistent-TileEntity-Lore-and-DisplayName.patch b/patches/server/0108-Persistent-TileEntity-Lore-and-DisplayName.patch index e05379ba1..e3b6ad4bd 100644 --- a/patches/server/0108-Persistent-TileEntity-Lore-and-DisplayName.patch +++ b/patches/server/0108-Persistent-TileEntity-Lore-and-DisplayName.patch @@ -189,10 +189,10 @@ index c3a07ccccd5cc38552363c82398f432c8d624288..132c9e6a643995d9fde535a78d9edc9e + // Purpur end } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index a55906d57840a471078a411f706b0f353462b03f..1615b807510cf5150526362195cbadaba3289afa 100644 +index eb9c4b2b3c5fdcb85e4e66afc745d62bf9cc2726..ab5d9375d20c38e0eb73a030524d59f78b58e3e5 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -124,6 +124,7 @@ public class PurpurWorldConfig { +@@ -308,6 +308,7 @@ public class PurpurWorldConfig { public boolean entitiesPickUpLootBypassMobGriefing = false; public boolean entitiesCanUsePortals = true; public boolean milkCuresBadOmen = true; @@ -200,7 +200,7 @@ index a55906d57840a471078a411f706b0f353462b03f..1615b807510cf5150526362195cbadab public double tridentLoyaltyVoidReturnHeight = 0.0D; public double voidDamageHeight = -64.0D; public double voidDamageDealt = 4.0D; -@@ -135,6 +136,7 @@ public class PurpurWorldConfig { +@@ -319,6 +320,7 @@ public class PurpurWorldConfig { entitiesPickUpLootBypassMobGriefing = getBoolean("gameplay-mechanics.entities-pick-up-loot-bypass-mob-griefing", entitiesPickUpLootBypassMobGriefing); entitiesCanUsePortals = getBoolean("gameplay-mechanics.entities-can-use-portals", entitiesCanUsePortals); milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); diff --git a/patches/server/0110-Flying-squids-Oh-my.patch b/patches/server/0110-Flying-squids-Oh-my.patch index 0194e260f..df6e215f0 100644 --- a/patches/server/0110-Flying-squids-Oh-my.patch +++ b/patches/server/0110-Flying-squids-Oh-my.patch @@ -38,10 +38,10 @@ index 2affff346a7fe81480e86cb61996039df0569853..be9b800d81b4d5faed7a3fb95d605bfd float f1 = Mth.cos(f) * 0.2F; float f2 = -0.1F + this.squid.getRandom().nextFloat() * 0.2F; diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 1615b807510cf5150526362195cbadaba3289afa..03347dbf377458220d8ccc24b0993919562d352a 100644 +index ab5d9375d20c38e0eb73a030524d59f78b58e3e5..78391c281e649fbf4b8c13544536755edc09dd68 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -1361,6 +1361,7 @@ public class PurpurWorldConfig { +@@ -1354,6 +1354,7 @@ public class PurpurWorldConfig { public double squidMaxHealth = 10.0D; public boolean squidImmuneToEAR = true; public double squidOffsetWaterCheck = 0.0D; @@ -49,7 +49,7 @@ index 1615b807510cf5150526362195cbadaba3289afa..03347dbf377458220d8ccc24b0993919 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); if (PurpurConfig.version < 10) { -@@ -1371,6 +1372,7 @@ public class PurpurWorldConfig { +@@ -1364,6 +1365,7 @@ public class PurpurWorldConfig { squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); diff --git a/patches/server/0111-Infinity-bow-settings.patch b/patches/server/0111-Infinity-bow-settings.patch index f90eb35c3..4422d574a 100644 --- a/patches/server/0111-Infinity-bow-settings.patch +++ b/patches/server/0111-Infinity-bow-settings.patch @@ -18,11 +18,11 @@ index afe33f20578177cb517e1c116e6319481642e66c..93c58f7ef7f00c7f843444ad6d00bd85 if (!world.isClientSide) { ArrowItem itemarrow = (ArrowItem) (itemstack1.getItem() instanceof ArrowItem ? itemstack1.getItem() : Items.ARROW); diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 03347dbf377458220d8ccc24b0993919562d352a..7c2a081585b37346fa9ace6290352e5b58f1261c 100644 +index 78391c281e649fbf4b8c13544536755edc09dd68..7f4860ee1b0b95096e71b51059a29b9fbe541e2c 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -299,6 +299,15 @@ public class PurpurWorldConfig { - idleTimeoutUpdateTabList = getBoolean("gameplay-mechanics.player.idle-timeout.update-tab-list", idleTimeoutUpdateTabList); +@@ -107,6 +107,15 @@ public class PurpurWorldConfig { + entityLifeSpan = getInt("gameplay-mechanics.entity-lifespan", entityLifeSpan); } + public boolean infinityWorksWithNormalArrows = true; @@ -34,6 +34,6 @@ index 03347dbf377458220d8ccc24b0993919562d352a..7c2a081585b37346fa9ace6290352e5b + infinityWorksWithTippedArrows = getBoolean("gameplay-mechanics.infinity-bow.tipped-arrows", infinityWorksWithTippedArrows); + } + - public int playerSpawnInvulnerableTicks = 60; - public boolean playerInvulnerableWhileAcceptingResourcePack = false; - private void playerInvulnerabilities() { + public List itemImmuneToCactus = new ArrayList<>(); + public List itemImmuneToExplosion = new ArrayList<>(); + public List itemImmuneToFire = new ArrayList<>(); diff --git a/patches/server/0112-Stonecutter-damage.patch b/patches/server/0112-Stonecutter-damage.patch index 1ace0d072..1a952fd0a 100644 --- a/patches/server/0112-Stonecutter-damage.patch +++ b/patches/server/0112-Stonecutter-damage.patch @@ -61,10 +61,10 @@ index 2ad5ff9a1d7de54e75436e99da8a73db9dc91bde..60605a8a021cc56f9c3ba22bc43c43c3 } else if (blockState.is(Blocks.HONEY_BLOCK)) { return BlockPathTypes.STICKY_HONEY; diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 7c2a081585b37346fa9ace6290352e5b58f1261c..192896f331967b057c56bd3deeca1c4f740f7dff 100644 +index 7f4860ee1b0b95096e71b51059a29b9fbe541e2c..e3156b6ed40620d146fe28d7e60650fa7ab67bb0 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -1469,6 +1469,11 @@ public class PurpurWorldConfig { +@@ -430,6 +430,11 @@ public class PurpurWorldConfig { spawnerDeactivateByRedstone = getBoolean("blocks.spawner.deactivate-by-redstone", spawnerDeactivateByRedstone); } @@ -73,6 +73,6 @@ index 7c2a081585b37346fa9ace6290352e5b58f1261c..192896f331967b057c56bd3deeca1c4f + stonecutterDamage = (float) getDouble("blocks.stonecutter.damage", stonecutterDamage); + } + - public boolean turtleRidable = false; - public boolean turtleRidableInWater = false; - public double turtleMaxHealth = 30.0D; + public boolean babiesAreRidable = true; + public boolean untamedTamablesAreRidable = true; + public boolean useNightVisionWhenRiding = false; diff --git a/patches/server/0113-Configurable-daylight-cycle.patch b/patches/server/0113-Configurable-daylight-cycle.patch index a8ce5a6c4..33d2fcee3 100644 --- a/patches/server/0113-Configurable-daylight-cycle.patch +++ b/patches/server/0113-Configurable-daylight-cycle.patch @@ -18,7 +18,7 @@ index 689ad22925b2561f7c8db961743eb1f821dbb25f..fa3c960992cc240161817e54659d83fe public ClientboundSetTimePacket(long time, long timeOfDay, boolean doDaylightCycle) { this.gameTime = time % 192000; // Paper - fix guardian beam diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index dc968864cef387d362b116a9e733859b7460f967..52f5429b8ba95968da28226d75ba47618e1b99f4 100644 +index d10ebe9b094a0e8b62e6607a4fefaf0bcd412413..97697f2ee49ef1f3b0bfb291b1df99f5681992af 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -55,6 +55,7 @@ import net.minecraft.network.protocol.game.ClientboundExplodePacket; @@ -80,11 +80,11 @@ index dc968864cef387d362b116a9e733859b7460f967..52f5429b8ba95968da28226d75ba4761 public void tickCustomSpawners(boolean spawnMonsters, boolean spawnAnimals) { diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 192896f331967b057c56bd3deeca1c4f740f7dff..d1472eb116e82bbb7c0c6aec814371a9935d40b3 100644 +index e3156b6ed40620d146fe28d7e60650fa7ab67bb0..0dd7436691d5d009c360bbdb1645cd4f30bdeecf 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -171,6 +171,13 @@ public class PurpurWorldConfig { - elytraDamagePerTridentBoost = getInt("gameplay-mechanics.elytra.damage-per-boost.trident", elytraDamagePerTridentBoost); +@@ -89,6 +89,13 @@ public class PurpurWorldConfig { + armorstandStepHeight = (float) getDouble("gameplay-mechanics.armorstand.step-height", armorstandStepHeight); } + public int daytimeTicks = 12000; @@ -94,6 +94,6 @@ index 192896f331967b057c56bd3deeca1c4f740f7dff..d1472eb116e82bbb7c0c6aec814371a9 + nighttimeTicks = getInt("gameplay-mechanics.daylight-cycle-ticks.nighttime", nighttimeTicks); + } + - public int entityLifeSpan = 0; - private void entitySettings() { - entityLifeSpan = getInt("gameplay-mechanics.entity-lifespan", entityLifeSpan); + public int elytraDamagePerSecond = 1; + public double elytraDamageMultiplyBySpeed = 0; + public boolean elytraIgnoreUnbreaking = false; diff --git a/patches/server/0115-Infinite-fuel-furnace.patch b/patches/server/0115-Infinite-fuel-furnace.patch index a10835bee..224119c87 100644 --- a/patches/server/0115-Infinite-fuel-furnace.patch +++ b/patches/server/0115-Infinite-fuel-furnace.patch @@ -48,10 +48,10 @@ index c559ec5041474e585e4d95a664c84e1fa895cf16..806277d029a1c1a2d334a05d94163415 private static boolean canBurn(@Nullable Recipe recipe, NonNullList slots, int count) { diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index d1472eb116e82bbb7c0c6aec814371a9935d40b3..994928c1bc24f836f957563780cbb2c1b415ba44 100644 +index 0dd7436691d5d009c360bbdb1645cd4f30bdeecf..42a9dbddefef715c5c21003a76fdfc33621d1f89 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -410,6 +410,11 @@ public class PurpurWorldConfig { +@@ -398,6 +398,11 @@ public class PurpurWorldConfig { farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); } diff --git a/patches/server/0118-Ability-to-re-add-farmland-mechanics-from-Alpha.patch b/patches/server/0118-Ability-to-re-add-farmland-mechanics-from-Alpha.patch index 163d9dc09..13bb1dbe4 100644 --- a/patches/server/0118-Ability-to-re-add-farmland-mechanics-from-Alpha.patch +++ b/patches/server/0118-Ability-to-re-add-farmland-mechanics-from-Alpha.patch @@ -24,10 +24,10 @@ index 97e5cb4fd9f97c0bfa9d66c0ceac84e134f1053f..e92f6ffcda47aad76ad647bc2ad3d186 return; } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 994928c1bc24f836f957563780cbb2c1b415ba44..0fad44563547eb3643019a42d1d38a371df0613d 100644 +index 42a9dbddefef715c5c21003a76fdfc33621d1f89..54bab3e1bcffadf9674d50169c44c9ffa04b8685 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -406,8 +406,10 @@ public class PurpurWorldConfig { +@@ -394,8 +394,10 @@ public class PurpurWorldConfig { } public boolean farmlandGetsMoistFromBelow = false; diff --git a/patches/server/0119-Add-adjustable-breeding-cooldown-to-config.patch b/patches/server/0119-Add-adjustable-breeding-cooldown-to-config.patch index 3985f7c5a..02e092def 100644 --- a/patches/server/0119-Add-adjustable-breeding-cooldown-to-config.patch +++ b/patches/server/0119-Add-adjustable-breeding-cooldown-to-config.patch @@ -95,10 +95,10 @@ index 917a671894e16e024db941cea1845e39eaf93ef8..b17f250eec710c91a1d5995136d7dec2 this.world = new CraftWorld((ServerLevel) this, gen, env); this.ticksPerAnimalSpawns = this.getCraftServer().getTicksPerAnimalSpawns(); // CraftBukkit diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 0fad44563547eb3643019a42d1d38a371df0613d..788884481c4df2e25843245b484682371e5267fe 100644 +index 54bab3e1bcffadf9674d50169c44c9ffa04b8685..a312da168c16d8fd2f28b43d7edb2a8002f8ac64 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -129,6 +129,7 @@ public class PurpurWorldConfig { +@@ -329,6 +329,7 @@ public class PurpurWorldConfig { public double voidDamageHeight = -64.0D; public double voidDamageDealt = 4.0D; public int raidCooldownSeconds = 0; @@ -106,14 +106,14 @@ index 0fad44563547eb3643019a42d1d38a371df0613d..788884481c4df2e25843245b48468237 private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); -@@ -141,6 +142,7 @@ public class PurpurWorldConfig { +@@ -341,6 +342,7 @@ public class PurpurWorldConfig { voidDamageHeight = getDouble("gameplay-mechanics.void-damage-height", voidDamageHeight); voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds); + animalBreedingCooldownSeconds = getInt("gameplay-mechanics.animal-breeding-cooldown-seconds", animalBreedingCooldownSeconds); } - public boolean catSpawning; + public Set noRandomTickBlocks = new HashSet<>(); diff --git a/src/main/java/net/pl3x/purpur/command/PurpurCommand.java b/src/main/java/net/pl3x/purpur/command/PurpurCommand.java index 6e7f56fe2b78d7a09d5d130f2c88338fb8ae628e..cd63e9e556fa4931ab33c63931cf916757c51a62 100644 --- a/src/main/java/net/pl3x/purpur/command/PurpurCommand.java diff --git a/patches/server/0120-Make-entity-breeding-times-configurable.patch b/patches/server/0120-Make-entity-breeding-times-configurable.patch index a947dd701..d8b8d15e8 100644 --- a/patches/server/0120-Make-entity-breeding-times-configurable.patch +++ b/patches/server/0120-Make-entity-breeding-times-configurable.patch @@ -474,10 +474,10 @@ index 5d289be8f0ef003abbce992e7662f6ddce4f4a99..5e3d7321a73144c3e4c43c18c5b748b2 @Override diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 788884481c4df2e25843245b484682371e5267fe..ff2be552313fe5543228838245dcfa24cdcad342 100644 +index a312da168c16d8fd2f28b43d7edb2a8002f8ac64..fd773f696d5f3940a16debd545bf9fee0ea9288d 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -464,9 +464,11 @@ public class PurpurWorldConfig { +@@ -462,9 +462,11 @@ public class PurpurWorldConfig { public boolean axolotlRidable = false; public double axolotlMaxHealth = 14.0D; @@ -489,7 +489,7 @@ index 788884481c4df2e25843245b484682371e5267fe..ff2be552313fe5543228838245dcfa24 } public boolean batRidable = false; -@@ -496,6 +498,7 @@ public class PurpurWorldConfig { +@@ -494,6 +496,7 @@ public class PurpurWorldConfig { public boolean beeRidableInWater = false; public double beeMaxY = 256D; public double beeMaxHealth = 10.0D; @@ -497,7 +497,7 @@ index 788884481c4df2e25843245b484682371e5267fe..ff2be552313fe5543228838245dcfa24 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -506,6 +509,7 @@ public class PurpurWorldConfig { +@@ -504,6 +507,7 @@ public class PurpurWorldConfig { set("mobs.bee.attributes.max_health", oldValue); } beeMaxHealth = getDouble("mobs.bee.attributes.max_health", beeMaxHealth); @@ -505,7 +505,7 @@ index 788884481c4df2e25843245b484682371e5267fe..ff2be552313fe5543228838245dcfa24 } public boolean blazeRidable = false; -@@ -530,6 +534,7 @@ public class PurpurWorldConfig { +@@ -528,6 +532,7 @@ public class PurpurWorldConfig { public int catSpawnDelay = 1200; public int catSpawnSwampHutScanRange = 16; public int catSpawnVillageScanRange = 48; @@ -513,7 +513,7 @@ index 788884481c4df2e25843245b484682371e5267fe..ff2be552313fe5543228838245dcfa24 private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -542,6 +547,7 @@ public class PurpurWorldConfig { +@@ -540,6 +545,7 @@ public class PurpurWorldConfig { catSpawnDelay = getInt("mobs.cat.spawn-delay", catSpawnDelay); catSpawnSwampHutScanRange = getInt("mobs.cat.scan-range-for-other-cats.swamp-hut", catSpawnSwampHutScanRange); catSpawnVillageScanRange = getInt("mobs.cat.scan-range-for-other-cats.village", catSpawnVillageScanRange); @@ -521,7 +521,7 @@ index 788884481c4df2e25843245b484682371e5267fe..ff2be552313fe5543228838245dcfa24 } public boolean caveSpiderRidable = false; -@@ -562,6 +568,7 @@ public class PurpurWorldConfig { +@@ -560,6 +566,7 @@ public class PurpurWorldConfig { public boolean chickenRidableInWater = false; public double chickenMaxHealth = 4.0D; public boolean chickenRetaliate = false; @@ -529,7 +529,7 @@ index 788884481c4df2e25843245b484682371e5267fe..ff2be552313fe5543228838245dcfa24 private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -572,6 +579,7 @@ public class PurpurWorldConfig { +@@ -570,6 +577,7 @@ public class PurpurWorldConfig { } chickenMaxHealth = getDouble("mobs.chicken.attributes.max_health", chickenMaxHealth); chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate); @@ -537,7 +537,7 @@ index 788884481c4df2e25843245b484682371e5267fe..ff2be552313fe5543228838245dcfa24 } public boolean codRidable = false; -@@ -590,6 +598,7 @@ public class PurpurWorldConfig { +@@ -588,6 +596,7 @@ public class PurpurWorldConfig { public boolean cowRidableInWater = false; public double cowMaxHealth = 10.0D; public int cowFeedMushrooms = 0; @@ -545,7 +545,7 @@ index 788884481c4df2e25843245b484682371e5267fe..ff2be552313fe5543228838245dcfa24 private void cowSettings() { cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); -@@ -600,6 +609,7 @@ public class PurpurWorldConfig { +@@ -598,6 +607,7 @@ public class PurpurWorldConfig { } cowMaxHealth = getDouble("mobs.cow.attributes.max_health", cowMaxHealth); cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms); @@ -553,7 +553,7 @@ index 788884481c4df2e25843245b484682371e5267fe..ff2be552313fe5543228838245dcfa24 } public boolean creeperRidable = false; -@@ -647,6 +657,7 @@ public class PurpurWorldConfig { +@@ -645,6 +655,7 @@ public class PurpurWorldConfig { public double donkeyJumpStrengthMax = 0.5D; public double donkeyMovementSpeedMin = 0.175D; public double donkeyMovementSpeedMax = 0.175D; @@ -561,7 +561,7 @@ index 788884481c4df2e25843245b484682371e5267fe..ff2be552313fe5543228838245dcfa24 private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -662,6 +673,7 @@ public class PurpurWorldConfig { +@@ -660,6 +671,7 @@ public class PurpurWorldConfig { donkeyJumpStrengthMax = getDouble("mobs.donkey.attributes.jump_strength.max", donkeyJumpStrengthMax); donkeyMovementSpeedMin = getDouble("mobs.donkey.attributes.movement_speed.min", donkeyMovementSpeedMin); donkeyMovementSpeedMax = getDouble("mobs.donkey.attributes.movement_speed.max", donkeyMovementSpeedMax); @@ -569,7 +569,7 @@ index 788884481c4df2e25843245b484682371e5267fe..ff2be552313fe5543228838245dcfa24 } public boolean drownedRidable = false; -@@ -768,6 +780,7 @@ public class PurpurWorldConfig { +@@ -766,6 +778,7 @@ public class PurpurWorldConfig { public boolean foxRidableInWater = false; public double foxMaxHealth = 10.0D; public boolean foxTypeChangesWithTulips = false; @@ -577,7 +577,7 @@ index 788884481c4df2e25843245b484682371e5267fe..ff2be552313fe5543228838245dcfa24 private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -778,6 +791,7 @@ public class PurpurWorldConfig { +@@ -776,6 +789,7 @@ public class PurpurWorldConfig { } foxMaxHealth = getDouble("mobs.fox.attributes.max_health", foxMaxHealth); foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips); @@ -585,7 +585,7 @@ index 788884481c4df2e25843245b484682371e5267fe..ff2be552313fe5543228838245dcfa24 } public boolean ghastRidable = false; -@@ -836,10 +850,12 @@ public class PurpurWorldConfig { +@@ -834,10 +848,12 @@ public class PurpurWorldConfig { public boolean goatRidable = false; public boolean goatRidableInWater = false; public double goatMaxHealth = 10.0D; @@ -598,7 +598,7 @@ index 788884481c4df2e25843245b484682371e5267fe..ff2be552313fe5543228838245dcfa24 } public boolean guardianRidable = false; -@@ -857,6 +873,7 @@ public class PurpurWorldConfig { +@@ -855,6 +871,7 @@ public class PurpurWorldConfig { public boolean hoglinRidable = false; public boolean hoglinRidableInWater = false; public double hoglinMaxHealth = 40.0D; @@ -606,7 +606,7 @@ index 788884481c4df2e25843245b484682371e5267fe..ff2be552313fe5543228838245dcfa24 private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -866,6 +883,7 @@ public class PurpurWorldConfig { +@@ -864,6 +881,7 @@ public class PurpurWorldConfig { set("mobs.hoglin.attributes.max_health", oldValue); } hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth); @@ -614,7 +614,7 @@ index 788884481c4df2e25843245b484682371e5267fe..ff2be552313fe5543228838245dcfa24 } public boolean horseRidableInWater = false; -@@ -875,6 +893,7 @@ public class PurpurWorldConfig { +@@ -873,6 +891,7 @@ public class PurpurWorldConfig { public double horseJumpStrengthMax = 1.0D; public double horseMovementSpeedMin = 0.1125D; public double horseMovementSpeedMax = 0.3375D; @@ -622,7 +622,7 @@ index 788884481c4df2e25843245b484682371e5267fe..ff2be552313fe5543228838245dcfa24 private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -890,6 +909,7 @@ public class PurpurWorldConfig { +@@ -888,6 +907,7 @@ public class PurpurWorldConfig { horseJumpStrengthMax = getDouble("mobs.horse.attributes.jump_strength.max", horseJumpStrengthMax); horseMovementSpeedMin = getDouble("mobs.horse.attributes.movement_speed.min", horseMovementSpeedMin); horseMovementSpeedMax = getDouble("mobs.horse.attributes.movement_speed.max", horseMovementSpeedMax); @@ -630,7 +630,7 @@ index 788884481c4df2e25843245b484682371e5267fe..ff2be552313fe5543228838245dcfa24 } public boolean huskRidable = false; -@@ -960,6 +980,7 @@ public class PurpurWorldConfig { +@@ -958,6 +978,7 @@ public class PurpurWorldConfig { public double llamaJumpStrengthMax = 0.5D; public double llamaMovementSpeedMin = 0.175D; public double llamaMovementSpeedMax = 0.175D; @@ -638,7 +638,7 @@ index 788884481c4df2e25843245b484682371e5267fe..ff2be552313fe5543228838245dcfa24 private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -976,6 +997,7 @@ public class PurpurWorldConfig { +@@ -974,6 +995,7 @@ public class PurpurWorldConfig { llamaJumpStrengthMax = getDouble("mobs.llama.attributes.jump_strength.max", llamaJumpStrengthMax); llamaMovementSpeedMin = getDouble("mobs.llama.attributes.movement_speed.min", llamaMovementSpeedMin); llamaMovementSpeedMax = getDouble("mobs.llama.attributes.movement_speed.max", llamaMovementSpeedMax); @@ -646,7 +646,7 @@ index 788884481c4df2e25843245b484682371e5267fe..ff2be552313fe5543228838245dcfa24 } public boolean magmaCubeRidable = false; -@@ -995,6 +1017,7 @@ public class PurpurWorldConfig { +@@ -993,6 +1015,7 @@ public class PurpurWorldConfig { public boolean mooshroomRidable = false; public boolean mooshroomRidableInWater = false; public double mooshroomMaxHealth = 10.0D; @@ -654,7 +654,7 @@ index 788884481c4df2e25843245b484682371e5267fe..ff2be552313fe5543228838245dcfa24 private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1004,6 +1027,7 @@ public class PurpurWorldConfig { +@@ -1002,6 +1025,7 @@ public class PurpurWorldConfig { set("mobs.mooshroom.attributes.max_health", oldValue); } mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth); @@ -662,7 +662,7 @@ index 788884481c4df2e25843245b484682371e5267fe..ff2be552313fe5543228838245dcfa24 } public boolean muleRidableInWater = false; -@@ -1013,6 +1037,7 @@ public class PurpurWorldConfig { +@@ -1011,6 +1035,7 @@ public class PurpurWorldConfig { public double muleJumpStrengthMax = 0.5D; public double muleMovementSpeedMin = 0.175D; public double muleMovementSpeedMax = 0.175D; @@ -670,7 +670,7 @@ index 788884481c4df2e25843245b484682371e5267fe..ff2be552313fe5543228838245dcfa24 private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1028,11 +1053,13 @@ public class PurpurWorldConfig { +@@ -1026,11 +1051,13 @@ public class PurpurWorldConfig { muleJumpStrengthMax = getDouble("mobs.mule.attributes.jump_strength.max", muleJumpStrengthMax); muleMovementSpeedMin = getDouble("mobs.mule.attributes.movement_speed.min", muleMovementSpeedMin); muleMovementSpeedMax = getDouble("mobs.mule.attributes.movement_speed.max", muleMovementSpeedMax); @@ -684,7 +684,7 @@ index 788884481c4df2e25843245b484682371e5267fe..ff2be552313fe5543228838245dcfa24 private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1042,11 +1069,13 @@ public class PurpurWorldConfig { +@@ -1040,11 +1067,13 @@ public class PurpurWorldConfig { set("mobs.ocelot.attributes.max_health", oldValue); } ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth); @@ -698,7 +698,7 @@ index 788884481c4df2e25843245b484682371e5267fe..ff2be552313fe5543228838245dcfa24 private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1056,6 +1085,7 @@ public class PurpurWorldConfig { +@@ -1054,6 +1083,7 @@ public class PurpurWorldConfig { set("mobs.panda.attributes.max_health", oldValue); } pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth); @@ -706,7 +706,7 @@ index 788884481c4df2e25843245b484682371e5267fe..ff2be552313fe5543228838245dcfa24 } public boolean parrotRidable = false; -@@ -1136,6 +1166,7 @@ public class PurpurWorldConfig { +@@ -1134,6 +1164,7 @@ public class PurpurWorldConfig { public boolean pigRidableInWater = false; public double pigMaxHealth = 10.0D; public boolean pigGiveSaddleBack = false; @@ -714,7 +714,7 @@ index 788884481c4df2e25843245b484682371e5267fe..ff2be552313fe5543228838245dcfa24 private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -1146,6 +1177,7 @@ public class PurpurWorldConfig { +@@ -1144,6 +1175,7 @@ public class PurpurWorldConfig { } pigMaxHealth = getDouble("mobs.pig.attributes.max_health", pigMaxHealth); pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); @@ -722,7 +722,7 @@ index 788884481c4df2e25843245b484682371e5267fe..ff2be552313fe5543228838245dcfa24 } public boolean piglinRidable = false; -@@ -1195,6 +1227,7 @@ public class PurpurWorldConfig { +@@ -1193,6 +1225,7 @@ public class PurpurWorldConfig { public double polarBearMaxHealth = 30.0D; public String polarBearBreedableItemString = ""; public Item polarBearBreedableItem = null; @@ -730,7 +730,7 @@ index 788884481c4df2e25843245b484682371e5267fe..ff2be552313fe5543228838245dcfa24 private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -1207,6 +1240,7 @@ public class PurpurWorldConfig { +@@ -1205,6 +1238,7 @@ public class PurpurWorldConfig { polarBearBreedableItemString = getString("mobs.polar_bear.breedable-item", polarBearBreedableItemString); Item item = Registry.ITEM.get(new ResourceLocation(polarBearBreedableItemString)); if (item != Items.AIR) polarBearBreedableItem = item; @@ -738,7 +738,7 @@ index 788884481c4df2e25843245b484682371e5267fe..ff2be552313fe5543228838245dcfa24 } public boolean pufferfishRidable = false; -@@ -1226,6 +1260,7 @@ public class PurpurWorldConfig { +@@ -1224,6 +1258,7 @@ public class PurpurWorldConfig { public double rabbitMaxHealth = 3.0D; public double rabbitNaturalToast = 0.0D; public double rabbitNaturalKiller = 0.0D; @@ -746,7 +746,7 @@ index 788884481c4df2e25843245b484682371e5267fe..ff2be552313fe5543228838245dcfa24 private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1237,6 +1272,7 @@ public class PurpurWorldConfig { +@@ -1235,6 +1270,7 @@ public class PurpurWorldConfig { rabbitMaxHealth = getDouble("mobs.rabbit.attributes.max_health", rabbitMaxHealth); rabbitNaturalToast = getDouble("mobs.rabbit.spawn-toast-chance", rabbitNaturalToast); rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller); @@ -754,7 +754,7 @@ index 788884481c4df2e25843245b484682371e5267fe..ff2be552313fe5543228838245dcfa24 } public boolean ravagerRidable = false; -@@ -1268,6 +1304,7 @@ public class PurpurWorldConfig { +@@ -1266,6 +1302,7 @@ public class PurpurWorldConfig { public boolean sheepRidable = false; public boolean sheepRidableInWater = false; public double sheepMaxHealth = 8.0D; @@ -762,7 +762,7 @@ index 788884481c4df2e25843245b484682371e5267fe..ff2be552313fe5543228838245dcfa24 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1277,6 +1314,7 @@ public class PurpurWorldConfig { +@@ -1275,6 +1312,7 @@ public class PurpurWorldConfig { set("mobs.sheep.attributes.max_health", oldValue); } sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); @@ -770,7 +770,7 @@ index 788884481c4df2e25843245b484682371e5267fe..ff2be552313fe5543228838245dcfa24 } public boolean shulkerRidable = false; -@@ -1431,6 +1469,7 @@ public class PurpurWorldConfig { +@@ -1429,6 +1467,7 @@ public class PurpurWorldConfig { public boolean striderRidable = false; public boolean striderRidableInWater = false; public double striderMaxHealth = 20.0D; @@ -778,7 +778,7 @@ index 788884481c4df2e25843245b484682371e5267fe..ff2be552313fe5543228838245dcfa24 private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1440,6 +1479,7 @@ public class PurpurWorldConfig { +@@ -1438,6 +1477,7 @@ public class PurpurWorldConfig { set("mobs.strider.attributes.max_health", oldValue); } striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); @@ -786,7 +786,7 @@ index 788884481c4df2e25843245b484682371e5267fe..ff2be552313fe5543228838245dcfa24 } public boolean traderLlamaRidable = false; -@@ -1450,6 +1490,7 @@ public class PurpurWorldConfig { +@@ -1448,6 +1488,7 @@ public class PurpurWorldConfig { public double traderLlamaJumpStrengthMax = 0.5D; public double traderLlamaMovementSpeedMin = 0.175D; public double traderLlamaMovementSpeedMax = 0.175D; @@ -794,7 +794,7 @@ index 788884481c4df2e25843245b484682371e5267fe..ff2be552313fe5543228838245dcfa24 private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -1466,6 +1507,7 @@ public class PurpurWorldConfig { +@@ -1464,6 +1505,7 @@ public class PurpurWorldConfig { traderLlamaJumpStrengthMax = getDouble("mobs.trader_llama.attributes.jump_strength.max", traderLlamaJumpStrengthMax); traderLlamaMovementSpeedMin = getDouble("mobs.trader_llama.attributes.movement_speed.min", traderLlamaMovementSpeedMin); traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax); @@ -802,7 +802,7 @@ index 788884481c4df2e25843245b484682371e5267fe..ff2be552313fe5543228838245dcfa24 } public boolean tropicalFishRidable = false; -@@ -1496,6 +1538,7 @@ public class PurpurWorldConfig { +@@ -1484,6 +1526,7 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromExpOrbs = true; public boolean turtleEggsBreakFromItems = true; public boolean turtleEggsBreakFromMinecarts = true; @@ -810,7 +810,7 @@ index 788884481c4df2e25843245b484682371e5267fe..ff2be552313fe5543228838245dcfa24 private void turtleEggSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -1508,6 +1551,7 @@ public class PurpurWorldConfig { +@@ -1496,6 +1539,7 @@ public class PurpurWorldConfig { turtleEggsBreakFromExpOrbs = getBoolean("blocks.turtle_egg.break-from-exp-orbs", turtleEggsBreakFromExpOrbs); turtleEggsBreakFromItems = getBoolean("blocks.turtle_egg.break-from-items", turtleEggsBreakFromItems); turtleEggsBreakFromMinecarts = getBoolean("blocks.turtle_egg.break-from-minecarts", turtleEggsBreakFromMinecarts); @@ -818,7 +818,7 @@ index 788884481c4df2e25843245b484682371e5267fe..ff2be552313fe5543228838245dcfa24 } public boolean vexRidable = false; -@@ -1537,6 +1581,7 @@ public class PurpurWorldConfig { +@@ -1525,6 +1569,7 @@ public class PurpurWorldConfig { public int villagerSpawnIronGolemRadius = 0; public int villagerSpawnIronGolemLimit = 0; public boolean villagerCanBreed = true; @@ -826,7 +826,7 @@ index 788884481c4df2e25843245b484682371e5267fe..ff2be552313fe5543228838245dcfa24 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1554,6 +1599,7 @@ public class PurpurWorldConfig { +@@ -1542,6 +1587,7 @@ public class PurpurWorldConfig { villagerSpawnIronGolemRadius = getInt("mobs.villager.spawn-iron-golem.radius", villagerSpawnIronGolemRadius); villagerSpawnIronGolemLimit = getInt("mobs.villager.spawn-iron-golem.limit", villagerSpawnIronGolemLimit); villagerCanBreed = getBoolean("mobs.villager.can-breed", villagerCanBreed); @@ -834,7 +834,7 @@ index 788884481c4df2e25843245b484682371e5267fe..ff2be552313fe5543228838245dcfa24 } public boolean vindicatorRidable = false; -@@ -1647,6 +1693,7 @@ public class PurpurWorldConfig { +@@ -1635,6 +1681,7 @@ public class PurpurWorldConfig { public boolean wolfRidable = false; public boolean wolfRidableInWater = false; public double wolfMaxHealth = 8.0D; @@ -842,7 +842,7 @@ index 788884481c4df2e25843245b484682371e5267fe..ff2be552313fe5543228838245dcfa24 private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -1656,6 +1703,7 @@ public class PurpurWorldConfig { +@@ -1644,6 +1691,7 @@ public class PurpurWorldConfig { set("mobs.wolf.attributes.max_health", oldValue); } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); diff --git a/patches/server/0121-Apply-display-names-from-item-forms-of-entities-to-e.patch b/patches/server/0121-Apply-display-names-from-item-forms-of-entities-to-e.patch new file mode 100644 index 000000000..f3ca05c55 --- /dev/null +++ b/patches/server/0121-Apply-display-names-from-item-forms-of-entities-to-e.patch @@ -0,0 +1,174 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: BillyGalbreath +Date: Sat, 19 Jun 2021 14:45:41 -0500 +Subject: [PATCH] Apply display names from item forms of entities to entities + and vice versa + + +diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java +index 7a3a364f5e3b025cc0a5694401cb9298c80cb733..796ab61f4513c02b0d55d34044d2f7084c447796 100644 +--- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java ++++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java +@@ -597,7 +597,13 @@ public class ArmorStand extends LivingEntity { + } + + private void brokenByPlayer(DamageSource damageSource) { +- drops.add(org.bukkit.craftbukkit.inventory.CraftItemStack.asBukkitCopy(new ItemStack(Items.ARMOR_STAND))); // CraftBukkit - add to drops ++ // Purpur start ++ final ItemStack armorStand = new ItemStack(Items.ARMOR_STAND); ++ if (this.level.purpurConfig.persistentDroppableEntityDisplayNames && this.hasCustomName()) { ++ armorStand.setHoverName(this.getCustomName()); ++ } ++ drops.add(org.bukkit.craftbukkit.inventory.CraftItemStack.asBukkitCopy(armorStand)); // CraftBukkit - add to drops ++ // Purpur end + this.brokenByAnything(damageSource); + } + +diff --git a/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java b/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java +index b829efdb40051a41b3bf1cabb8bf7d7c952797b5..90f1ecd97eef93316f61bf5d761d33c313e1a077 100644 +--- a/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java ++++ b/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java +@@ -257,7 +257,13 @@ public class ItemFrame extends HangingEntity { + } + + if (alwaysDrop) { +- this.spawnAtLocation(this.getFrameItemStack()); ++ // Purpur start ++ final ItemStack itemFrame = this.getFrameItemStack(); ++ if (this.level.purpurConfig.persistentDroppableEntityDisplayNames && this.hasCustomName()) { ++ itemFrame.setHoverName(this.getCustomName()); ++ } ++ this.spawnAtLocation(itemFrame); ++ // Purpur end + } + + if (!itemstack.isEmpty()) { +diff --git a/src/main/java/net/minecraft/world/entity/decoration/Painting.java b/src/main/java/net/minecraft/world/entity/decoration/Painting.java +index a853e2cc2e3f06a0ca0bb1799b3fd02890ae6521..a8265cd631d335d4eaec1918bd48570ee1fc9429 100644 +--- a/src/main/java/net/minecraft/world/entity/decoration/Painting.java ++++ b/src/main/java/net/minecraft/world/entity/decoration/Painting.java +@@ -114,7 +114,13 @@ public class Painting extends HangingEntity { + } + } + +- this.spawnAtLocation((ItemLike) Items.PAINTING); ++ // Purpur start ++ final ItemStack painting = new ItemStack(Items.PAINTING); ++ if (this.level.purpurConfig.persistentDroppableEntityDisplayNames && this.hasCustomName()) { ++ painting.setHoverName(this.getCustomName()); ++ } ++ this.spawnAtLocation(painting); ++ // Purpur end + } + } + +diff --git a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java +index d4a19fc38027717e43353bc62ef23e564f3b4c26..4f85cd75af97ce29211c5d4347292125c0ca527d 100644 +--- a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java ++++ b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java +@@ -209,7 +209,13 @@ public class Boat extends Entity { + } + // CraftBukkit end + if (!flag && this.level.getGameRules().getBoolean(GameRules.RULE_DOENTITYDROPS)) { +- this.spawnAtLocation((ItemLike) this.getDropItem()); ++ // Purpur start ++ final ItemStack boat = new ItemStack(this.getDropItem()); ++ if (this.level.purpurConfig.persistentDroppableEntityDisplayNames && this.hasCustomName()) { ++ boat.setHoverName(this.getCustomName()); ++ } ++ this.spawnAtLocation(boat); ++ // Purpur end + } + + this.discard(); +diff --git a/src/main/java/net/minecraft/world/item/ArmorStandItem.java b/src/main/java/net/minecraft/world/item/ArmorStandItem.java +index 44d63145480d38a4ec3a38be108200af070bcffa..7de67b75010f0da52004c911f6ee98eb133fdaed 100644 +--- a/src/main/java/net/minecraft/world/item/ArmorStandItem.java ++++ b/src/main/java/net/minecraft/world/item/ArmorStandItem.java +@@ -63,6 +63,14 @@ public class ArmorStandItem extends Item { + return InteractionResult.FAIL; + } + // CraftBukkit end ++ // Purpur start ++ if (world.purpurConfig.persistentDroppableEntityDisplayNames && itemstack.hasCustomHoverName()) { ++ entityarmorstand.setCustomName(itemstack.getHoverName()); ++ if (world.purpurConfig.armorstandSetNameVisible) { ++ entityarmorstand.setCustomNameVisible(true); ++ } ++ } ++ // Purpur end + worldserver.addFreshEntityWithPassengers(entityarmorstand); + world.playSound((Player) null, entityarmorstand.getX(), entityarmorstand.getY(), entityarmorstand.getZ(), SoundEvents.ARMOR_STAND_PLACE, SoundSource.BLOCKS, 0.75F, 0.8F); + world.gameEvent((Entity) context.getPlayer(), GameEvent.ENTITY_PLACE, (Entity) entityarmorstand); +diff --git a/src/main/java/net/minecraft/world/item/BoatItem.java b/src/main/java/net/minecraft/world/item/BoatItem.java +index c0864c833fd313e6ba9339ecc7f9e2359954bda3..8f5ed444ab430ae60d52e68ded605cfa0634331f 100644 +--- a/src/main/java/net/minecraft/world/item/BoatItem.java ++++ b/src/main/java/net/minecraft/world/item/BoatItem.java +@@ -67,6 +67,11 @@ public class BoatItem extends Item { + + entityboat.setType(this.type); + entityboat.setYRot(user.getYRot()); ++ // Purpur start ++ if (world.purpurConfig.persistentDroppableEntityDisplayNames && itemstack.hasCustomHoverName()) { ++ entityboat.setCustomName(itemstack.getHoverName()); ++ } ++ // Purpur end + if (!world.noCollision(entityboat, entityboat.getBoundingBox().inflate(-0.1D))) { + return InteractionResultHolder.fail(itemstack); + } else { +diff --git a/src/main/java/net/minecraft/world/item/HangingEntityItem.java b/src/main/java/net/minecraft/world/item/HangingEntityItem.java +index 282bfe4904637aaff1bd29e30ed18ba843c07cab..ddd50db8bb92c147d7c1eef4d1df3ac53e2d3e4b 100644 +--- a/src/main/java/net/minecraft/world/item/HangingEntityItem.java ++++ b/src/main/java/net/minecraft/world/item/HangingEntityItem.java +@@ -40,7 +40,7 @@ public class HangingEntityItem extends Item { + return InteractionResult.FAIL; + } else { + Level world = context.getLevel(); +- Object object; ++ Entity object; // Purpur + + if (this.type == EntityType.PAINTING) { + object = new Painting(world, blockposition1, enumdirection); +@@ -58,6 +58,11 @@ public class HangingEntityItem extends Item { + + if (nbttagcompound != null) { + EntityType.updateCustomEntityTag(world, entityhuman, (Entity) object, nbttagcompound); ++ // Purpur start ++ if (world.purpurConfig.persistentDroppableEntityDisplayNames && itemstack.hasCustomHoverName()) { ++ object.setCustomName(itemstack.getHoverName()); ++ } ++ // Purpur end + } + + if (((HangingEntity) object).survives()) { +diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +index fd773f696d5f3940a16debd545bf9fee0ea9288d..08a969b85553409160911ea77b9caa5437f6ef5d 100644 +--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java ++++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +@@ -85,8 +85,10 @@ public class PurpurWorldConfig { + } + + public float armorstandStepHeight = 0.0F; ++ public boolean armorstandSetNameVisible = false; + private void armorstandSettings() { + armorstandStepHeight = (float) getDouble("gameplay-mechanics.armorstand.step-height", armorstandStepHeight); ++ armorstandSetNameVisible = getBoolean("gameplay-mechanics.armorstand.set-name-visible-when-placing-with-custom-name", armorstandSetNameVisible); + } + + public int daytimeTicks = 12000; +@@ -325,6 +327,7 @@ public class PurpurWorldConfig { + public boolean entitiesCanUsePortals = true; + public boolean milkCuresBadOmen = true; + public boolean persistentTileEntityDisplayNames = false; ++ public boolean persistentDroppableEntityDisplayNames = false; + public double tridentLoyaltyVoidReturnHeight = 0.0D; + public double voidDamageHeight = -64.0D; + public double voidDamageDealt = 4.0D; +@@ -338,6 +341,7 @@ public class PurpurWorldConfig { + entitiesCanUsePortals = getBoolean("gameplay-mechanics.entities-can-use-portals", entitiesCanUsePortals); + milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); + persistentTileEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-tileentity-display-names-and-lore", persistentTileEntityDisplayNames); ++ persistentDroppableEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-droppable-entity-display-names", persistentDroppableEntityDisplayNames); + tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight); + voidDamageHeight = getDouble("gameplay-mechanics.void-damage-height", voidDamageHeight); + voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); diff --git a/patches/server/0122-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch b/patches/server/0122-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch new file mode 100644 index 000000000..a360f9931 --- /dev/null +++ b/patches/server/0122-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch @@ -0,0 +1,34 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: BillyGalbreath +Date: Sat, 19 Jun 2021 14:53:40 -0500 +Subject: [PATCH] Set name visible when using a Name Tag on an Armor Stand + + +diff --git a/src/main/java/net/minecraft/world/item/NameTagItem.java b/src/main/java/net/minecraft/world/item/NameTagItem.java +index 623f78c078fb3aa2665d7e8a37672438227bce6b..500c69e555c7247e20ef8cc59d83415578f44427 100644 +--- a/src/main/java/net/minecraft/world/item/NameTagItem.java ++++ b/src/main/java/net/minecraft/world/item/NameTagItem.java +@@ -24,6 +24,7 @@ public class NameTagItem extends Item { + if (!event.callEvent()) return InteractionResult.PASS; + LivingEntity newEntityLiving = ((org.bukkit.craftbukkit.entity.CraftLivingEntity) event.getEntity()).getHandle(); + newEntityLiving.setCustomName(event.getName() != null ? PaperAdventure.asVanilla(event.getName()) : null); ++ if (user.level.purpurConfig.armorstandFixNametags && entity instanceof net.minecraft.world.entity.decoration.ArmorStand) entity.setCustomNameVisible(true); // Purpur + if (event.isPersistent() && newEntityLiving instanceof Mob) { + ((Mob) newEntityLiving).setPersistenceRequired(); + // Paper end +diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +index 08a969b85553409160911ea77b9caa5437f6ef5d..d2d5c5f92e5415f647cbebf16f3121f8230be24e 100644 +--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java ++++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +@@ -86,9 +86,11 @@ public class PurpurWorldConfig { + + public float armorstandStepHeight = 0.0F; + public boolean armorstandSetNameVisible = false; ++ public boolean armorstandFixNametags = false; + private void armorstandSettings() { + armorstandStepHeight = (float) getDouble("gameplay-mechanics.armorstand.step-height", armorstandStepHeight); + armorstandSetNameVisible = getBoolean("gameplay-mechanics.armorstand.set-name-visible-when-placing-with-custom-name", armorstandSetNameVisible); ++ armorstandFixNametags = getBoolean("gameplay-mechanics.armorstand.fix-nametags", armorstandFixNametags); + } + + public int daytimeTicks = 12000; diff --git a/patches/server/0123-Add-twisting-and-weeping-vines-growth-rates.patch b/patches/server/0123-Add-twisting-and-weeping-vines-growth-rates.patch new file mode 100644 index 000000000..ed7f419ad --- /dev/null +++ b/patches/server/0123-Add-twisting-and-weeping-vines-growth-rates.patch @@ -0,0 +1,89 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: BillyGalbreath +Date: Sat, 19 Jun 2021 15:16:56 -0500 +Subject: [PATCH] Add twisting and weeping vines growth rates + + +diff --git a/src/main/java/net/minecraft/world/level/block/GrowingPlantHeadBlock.java b/src/main/java/net/minecraft/world/level/block/GrowingPlantHeadBlock.java +index 3129c8db32fd79ab5917ffc93ee6dd5db58b1aad..9f1d43ad720750f9d50cc3cfbe1fc9b335cffd0d 100644 +--- a/src/main/java/net/minecraft/world/level/block/GrowingPlantHeadBlock.java ++++ b/src/main/java/net/minecraft/world/level/block/GrowingPlantHeadBlock.java +@@ -39,9 +39,11 @@ public abstract class GrowingPlantHeadBlock extends GrowingPlantBlock implements + return (Integer) state.getValue(GrowingPlantHeadBlock.AGE) < 25; + } + ++ public abstract double getGrowthModifier(ServerLevel world); // Purpur ++ + @Override + public void randomTick(BlockState state, ServerLevel world, BlockPos pos, Random random) { +- if ((Integer) state.getValue(GrowingPlantHeadBlock.AGE) < 25 && random.nextDouble() < (100.0D / world.spigotConfig.kelpModifier) * this.growPerTickProbability) { // Spigot ++ if (state.getValue(GrowingPlantHeadBlock.AGE) < 25 && random.nextDouble() < (100.0D / this.getGrowthModifier(world)) * this.growPerTickProbability) { // Spigot // Purpur + BlockPos blockposition1 = pos.relative(this.growthDirection); + + if (this.canGrowInto(world.getBlockState(blockposition1))) { +diff --git a/src/main/java/net/minecraft/world/level/block/KelpBlock.java b/src/main/java/net/minecraft/world/level/block/KelpBlock.java +index 2bd5db55656c9ace95ad5ffdc4a6d07daa0948e4..5f9a8dd6b4f7c9285ffcce8bbe0e334a28cc9699 100644 +--- a/src/main/java/net/minecraft/world/level/block/KelpBlock.java ++++ b/src/main/java/net/minecraft/world/level/block/KelpBlock.java +@@ -64,4 +64,10 @@ public class KelpBlock extends GrowingPlantHeadBlock implements LiquidBlockConta + public FluidState getFluidState(BlockState state) { + return Fluids.WATER.getSource(false); + } ++ ++ // Purpur start ++ public double getGrowthModifier(net.minecraft.server.level.ServerLevel world) { ++ return world.spigotConfig.kelpModifier; ++ } ++ // Purpur end + } +diff --git a/src/main/java/net/minecraft/world/level/block/TwistingVinesBlock.java b/src/main/java/net/minecraft/world/level/block/TwistingVinesBlock.java +index bc9813ad36d95d90eafe51afa27857937b6eecc6..c877f7e4e55c63d91ce58c15850e279be3e159a7 100644 +--- a/src/main/java/net/minecraft/world/level/block/TwistingVinesBlock.java ++++ b/src/main/java/net/minecraft/world/level/block/TwistingVinesBlock.java +@@ -27,4 +27,10 @@ public class TwistingVinesBlock extends GrowingPlantHeadBlock { + protected boolean canGrowInto(BlockState state) { + return NetherVines.isValidGrowthState(state); + } ++ ++ // Purpur start ++ public double getGrowthModifier(net.minecraft.server.level.ServerLevel world) { ++ return world.purpurConfig.twistingVinesGrowthModifier; ++ } ++ // Purpur end + } +diff --git a/src/main/java/net/minecraft/world/level/block/WeepingVinesBlock.java b/src/main/java/net/minecraft/world/level/block/WeepingVinesBlock.java +index 35b2bad76c45b5a94ba7f2e9c7a8cfeb8c3f498b..d2cb1a7e7ea364cb8e2af4c4e756d8e45bc0ca10 100644 +--- a/src/main/java/net/minecraft/world/level/block/WeepingVinesBlock.java ++++ b/src/main/java/net/minecraft/world/level/block/WeepingVinesBlock.java +@@ -27,4 +27,10 @@ public class WeepingVinesBlock extends GrowingPlantHeadBlock { + protected boolean canGrowInto(BlockState state) { + return NetherVines.isValidGrowthState(state); + } ++ ++ // Purpur start ++ public double getGrowthModifier(net.minecraft.server.level.ServerLevel world) { ++ return world.purpurConfig.weepingVinesGrowthModifier; ++ } ++ // Purpur end + } +diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +index d2d5c5f92e5415f647cbebf16f3121f8230be24e..f1b0d55f425b3028178323e710991fff481e0ba6 100644 +--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java ++++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +@@ -457,6 +457,16 @@ public class PurpurWorldConfig { + stonecutterDamage = (float) getDouble("blocks.stonecutter.damage", stonecutterDamage); + } + ++ public double twistingVinesGrowthModifier = 0.10D; ++ private void twistingVinesSettings() { ++ twistingVinesGrowthModifier = getDouble("blocks.twisting_vines.growth-modifier", twistingVinesGrowthModifier); ++ } ++ ++ public double weepingVinesGrowthModifier = 0.10D; ++ private void weepingVinesSettings() { ++ weepingVinesGrowthModifier = getDouble("blocks.weeping_vines.growth-modifier", weepingVinesGrowthModifier); ++ } ++ + public boolean babiesAreRidable = true; + public boolean untamedTamablesAreRidable = true; + public boolean useNightVisionWhenRiding = false;