diff --git a/purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch b/purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch index 0e68624d5..c1b6fbad3 100644 --- a/purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch +++ b/purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch @@ -23,7 +23,7 @@ index d0313fd5368baa53ec511c8c07fc78a1f1ecec4e..898b1e01026ec1f44cfe60e9f18a997c protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index 2de776d7570f97f763033392ceeb8ffdbc0fafcd..b96fc67d28809f66181b1d36b475a8f85d596ea7 100644 +index 8c2bdb1775f7c4110c5f967b1052eba6a8fcbbfa..d1f7da0f4adc4609247c349d7ccdb0e6bba9b8f8 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java @@ -311,6 +311,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -70,7 +70,7 @@ index e7ea944e77175ee4051b8e7361c502d0cc2115d5..ecbec552e5cd1935f57872d2fb502d3e public boolean isFlapping() { return !this.isResting() && this.tickCount % 10.0F == 0.0F; diff --git a/net/minecraft/world/entity/animal/Bee.java b/net/minecraft/world/entity/animal/Bee.java -index b9bf40c389460d65d2566786ddd6f6740243e9a4..c150ba5f706b3dd51925533300c0432ccf5e2b81 100644 +index af0cf64b4c74d290dec8032f8a6127867e301130..3cdfded14a2fb74e3f345e893e60364b6b810075 100644 --- a/net/minecraft/world/entity/animal/Bee.java +++ b/net/minecraft/world/entity/animal/Bee.java @@ -472,6 +472,14 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { @@ -239,7 +239,7 @@ index 1292146341022483f78a9128ef9d7a88089274a0..990723c31aa1040a4e45b9857a18d862 public float getWalkTargetValue(BlockPos pos, LevelReader level) { return level.getBlockState(pos.below()).is(Blocks.MYCELIUM) ? 10.0F : level.getPathfindingCostFromLightLevels(pos); diff --git a/net/minecraft/world/entity/animal/Ocelot.java b/net/minecraft/world/entity/animal/Ocelot.java -index ce042556d41836ad5fa7eca6d019176f6207d5cb..1346556aa3a704930f1d278b65c6a2a904e41488 100644 +index d26a8658c8c56c3b0df4e5908de1ac23ac2dd351..41c42ecbf6aa233bd82000a4bbba3b186cca6a9d 100644 --- a/net/minecraft/world/entity/animal/Ocelot.java +++ b/net/minecraft/world/entity/animal/Ocelot.java @@ -79,6 +79,14 @@ public class Ocelot extends Animal { @@ -441,7 +441,7 @@ index 52de92b118b613217b8f92ff672c01ddf798a1fc..d97a297db3bec0c86c6a82ef1c353015 protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables diff --git a/net/minecraft/world/entity/animal/Squid.java b/net/minecraft/world/entity/animal/Squid.java -index dee371381817a992d249f62977ad7bd6eb8d5873..739b9df3c1c39a3207caa42d6aed7f4ff1741d42 100644 +index e3f43e8c6ddbae289a82157cab4beb18f682dd75..0391ff403391bfe13b907a8b1aae9057474f695b 100644 --- a/net/minecraft/world/entity/animal/Squid.java +++ b/net/minecraft/world/entity/animal/Squid.java @@ -91,6 +91,14 @@ public class Squid extends AgeableWaterCreature { @@ -497,7 +497,7 @@ index 98cb91574c8d2bdb6d180256f657ecc67987a6fe..4f0fbbb2caeda6d1477d3297fd68f802 this.entityData.set(HOME_POS, homePos); } diff --git a/net/minecraft/world/entity/animal/Wolf.java b/net/minecraft/world/entity/animal/Wolf.java -index 9c517f7afdf18f3cfa7c30da00066b3757f2dbbf..93a0fda3a2f3598c9f5606e4f379b60a2129a07b 100644 +index 90609ff3060322110ece27630de0abae1a6370a8..afc12968313a408e8a71a20c2c0defde52605c4e 100644 --- a/net/minecraft/world/entity/animal/Wolf.java +++ b/net/minecraft/world/entity/animal/Wolf.java @@ -202,6 +202,14 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/net/minecraft/world/entity/monster/Zombie.java b/net/minecraft/world/entity/monster/Zombie.java -index 9f476680247f50ca9381a4919dadc15f210a543c..73dfc60d9d30ce53a75eaac2630cdd9a8c508ccc 100644 +index 6c6806fd7204e3610142f0365d158aee33ef8b2c..8886aa0da372223ecd4d1a17c60971e167ced886 100644 --- a/net/minecraft/world/entity/monster/Zombie.java +++ b/net/minecraft/world/entity/monster/Zombie.java @@ -117,6 +117,14 @@ public class Zombie extends Monster { @@ -1750,7 +1750,7 @@ index 97241682311797faa93927e0477a7646ce53b2c8..eb82252cd87797927e153974b9280b5e return Monster.createMonsterAttributes() .add(Attributes.MAX_HEALTH, 50.0) diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java -index 52b54c59efd68a955a6e7cc49b01f614043c505d..c71d0f8efacb60e49395567fdc0c1c1e6e6f5aa8 100644 +index a7424ad414b72d2adaf0863bf1055f3eff5e2989..c4ce3a2f03bb7665beb131892288d8e4f722a4b5 100644 --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java @@ -268,6 +268,14 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -1769,7 +1769,7 @@ index 52b54c59efd68a955a6e7cc49b01f614043c505d..c71d0f8efacb60e49395567fdc0c1c1e public Brain getBrain() { return (Brain)super.getBrain(); diff --git a/net/minecraft/world/entity/npc/WanderingTrader.java b/net/minecraft/world/entity/npc/WanderingTrader.java -index 7e4d14d30eb3f06c0c7426e09084355ab4f3857d..b5af32a431b5ffe20b32bd82ccfae9b8343d0592 100644 +index 0f8ec3abead11c46205cd21290c65ec2b859efdc..5d5fa6b4ad18b4213f5098e4d708f3301a6f59c6 100644 --- a/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/net/minecraft/world/entity/npc/WanderingTrader.java @@ -93,6 +93,13 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill diff --git a/purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch b/purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch index c44228c21..af661d0d6 100644 --- a/purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch +++ b/purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch @@ -37,7 +37,7 @@ index 2d09f2a2c97f29ac0d941b7a3fb941102a5d545e..94abb9d8f6381aee000dbd0720477db8 public boolean isWhiteListed(GameProfile profile) { diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java -index d0321875d2a2b612b438cc7973a7e9f172a61778..15308ff3ed5835e3b8f41e7ddc2045f424e14660 100644 +index ca998a8a480af63d4a5f58a1f4490528a7b33c69..43657822f0660613078e9afa512000b5255a1537 100644 --- a/net/minecraft/world/entity/player/Player.java +++ b/net/minecraft/world/entity/player/Player.java @@ -202,6 +202,7 @@ public abstract class Player extends LivingEntity { diff --git a/purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch b/purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch index dd6a74fc4..bdc45a90d 100644 --- a/purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch +++ b/purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Minecart settings and WASD controls diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index 580818b9d2f992dd33b4831dbc612ba28c1bd725..3c7a30c9d1aa00f2b8e25c505ec57ad27344ffe5 100644 +index d77381237f8a7d1b2f280a5032f5e1c8f0ab8f94..9a88ca440fad04b5941cda125c6a39d24adf6d37 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java @@ -1240,6 +1240,11 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc diff --git a/purpur-server/minecraft-patches/features/0007-Villagers-follow-emerald-blocks.patch b/purpur-server/minecraft-patches/features/0007-Villagers-follow-emerald-blocks.patch index 64b658e5b..50933fa27 100644 --- a/purpur-server/minecraft-patches/features/0007-Villagers-follow-emerald-blocks.patch +++ b/purpur-server/minecraft-patches/features/0007-Villagers-follow-emerald-blocks.patch @@ -44,7 +44,7 @@ index a71d16d968bb90fd7aca6f01a3dd56df4f9a7ce6..b4e79cac5611942240ce85120f7bbee3 @Override public CraftMerchant getCraftMerchant() { diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java -index c71d0f8efacb60e49395567fdc0c1c1e6e6f5aa8..2f685a186b2dc27e70cddd5c4951c27e7ee3ef53 100644 +index c4ce3a2f03bb7665beb131892288d8e4f722a4b5..ff07cfe07200be23f17310522d737fca3251a580 100644 --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java @@ -265,6 +265,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -73,7 +73,7 @@ index c71d0f8efacb60e49395567fdc0c1c1e6e6f5aa8..2f685a186b2dc27e70cddd5c4951c27e public boolean assignProfessionWhenSpawned() { diff --git a/net/minecraft/world/entity/npc/WanderingTrader.java b/net/minecraft/world/entity/npc/WanderingTrader.java -index b5af32a431b5ffe20b32bd82ccfae9b8343d0592..f9755f36f7863b9742fe5b840a8130891ddff7c7 100644 +index 5d5fa6b4ad18b4213f5098e4d708f3301a6f59c6..4ba2921dd99f674344fe3371332c9b23365d3aa2 100644 --- a/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/net/minecraft/world/entity/npc/WanderingTrader.java @@ -97,9 +97,16 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill diff --git a/purpur-server/minecraft-patches/features/0008-Configurable-void-damage-height-and-damage.patch b/purpur-server/minecraft-patches/features/0008-Configurable-void-damage-height-and-damage.patch index 839f90b9e..e666f3848 100644 --- a/purpur-server/minecraft-patches/features/0008-Configurable-void-damage-height-and-damage.patch +++ b/purpur-server/minecraft-patches/features/0008-Configurable-void-damage-height-and-damage.patch @@ -7,7 +7,7 @@ temporarily migrate to paper's config drop patch on the next minecraft release diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index 2bd5a295be2500f198230a62f48900b51038d22b..96253bf49a6895524f6f606a9c434cb1b78948a6 100644 +index 9afbfe9bf493e09ca1963e8956ab7573964479b4..d04c06fafd133f773f311e7c2708fa8b049da67c 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java @@ -1222,6 +1222,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop entityType, ServerLevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/Zombie.java b/net/minecraft/world/entity/monster/Zombie.java -index 4b0f04c861397af694c477a8d3dc0de707e36874..b600fc46ed96d46769b7b289997a6e3cd422417b 100644 +index 8886aa0da372223ecd4d1a17c60971e167ced886..63446c874e7153dcfb99133145c8b5311d7d86cd 100644 --- a/net/minecraft/world/entity/monster/Zombie.java +++ b/net/minecraft/world/entity/monster/Zombie.java @@ -125,6 +125,20 @@ public class Zombie extends Monster { @@ -120,7 +120,7 @@ index 4b0f04c861397af694c477a8d3dc0de707e36874..b600fc46ed96d46769b7b289997a6e3c } } diff --git a/net/minecraft/world/entity/monster/ZombieVillager.java b/net/minecraft/world/entity/monster/ZombieVillager.java -index 610e5e5330462646034c5667c15245fdb2af77a0..54df75681a89df93f59a589189c7e96b4acc4c77 100644 +index 578cfc33a493b5ebc2ed42733577129a8953a461..f1e9bf75c50f353bd377051be82a391f97d952fd 100644 --- a/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/net/minecraft/world/entity/monster/ZombieVillager.java @@ -107,6 +107,23 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { @@ -148,7 +148,7 @@ index 610e5e5330462646034c5667c15245fdb2af77a0..54df75681a89df93f59a589189c7e96b protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/net/minecraft/world/entity/monster/ZombifiedPiglin.java -index 486906b860b3ccbeb1702d9bd7a5d9f11f534b1a..eaa2682de228cf5e9aff22b15f045c9ecbeec77b 100644 +index 1424954f5b4cf0fbe821425cd741b4b5c1bfed50..9603589e0501feee900cd21b04eb84b02bb45de2 100644 --- a/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/net/minecraft/world/entity/monster/ZombifiedPiglin.java @@ -88,6 +88,23 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { diff --git a/purpur-server/minecraft-patches/features/0013-Make-entity-breeding-times-configurable.patch b/purpur-server/minecraft-patches/features/0013-Make-entity-breeding-times-configurable.patch index be0ec1071..87761065c 100644 --- a/purpur-server/minecraft-patches/features/0013-Make-entity-breeding-times-configurable.patch +++ b/purpur-server/minecraft-patches/features/0013-Make-entity-breeding-times-configurable.patch @@ -47,7 +47,7 @@ index 33c3752be451508343cad83766da7c3be1822d02..fa34e7f1c20dfd569b52a9c8e0a8d4d5 animal.resetLove(); level.broadcastEntityEvent(this, (byte)18); diff --git a/net/minecraft/world/entity/animal/Bee.java b/net/minecraft/world/entity/animal/Bee.java -index c150ba5f706b3dd51925533300c0432ccf5e2b81..6f0b927101f9b5a07a0b6749557f6b0ebf35ae64 100644 +index 3cdfded14a2fb74e3f345e893e60364b6b810075..199bd7e9b053a2eac76987ceb5caebc088d1071d 100644 --- a/net/minecraft/world/entity/animal/Bee.java +++ b/net/minecraft/world/entity/animal/Bee.java @@ -480,6 +480,13 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { @@ -168,7 +168,7 @@ index 990723c31aa1040a4e45b9857a18d86287ef91b4..a64b609bf5ce38a252bfa1bcff869f88 public float getWalkTargetValue(BlockPos pos, LevelReader level) { return level.getBlockState(pos.below()).is(Blocks.MYCELIUM) ? 10.0F : level.getPathfindingCostFromLightLevels(pos); diff --git a/net/minecraft/world/entity/animal/Ocelot.java b/net/minecraft/world/entity/animal/Ocelot.java -index 1346556aa3a704930f1d278b65c6a2a904e41488..c76dff55f28f63be407c438f0c6ed634185d7b6b 100644 +index 41c42ecbf6aa233bd82000a4bbba3b186cca6a9d..b06697fd64a8962133f0324b2c03b9e9b4f32086 100644 --- a/net/minecraft/world/entity/animal/Ocelot.java +++ b/net/minecraft/world/entity/animal/Ocelot.java @@ -87,6 +87,13 @@ public class Ocelot extends Animal { @@ -312,7 +312,7 @@ index 4f0fbbb2caeda6d1477d3297fd68f802e4f3a9ca..edbccb7ca27aa8a1917eb8b35b3ba860 this.entityData.set(HOME_POS, homePos); } diff --git a/net/minecraft/world/entity/animal/Wolf.java b/net/minecraft/world/entity/animal/Wolf.java -index 93a0fda3a2f3598c9f5606e4f379b60a2129a07b..136f2c43272e5a45e473b66656818ed88de1cff3 100644 +index afc12968313a408e8a71a20c2c0defde52605c4e..9d79946497cfc92ff11160b86d5064d86916af36 100644 --- a/net/minecraft/world/entity/animal/Wolf.java +++ b/net/minecraft/world/entity/animal/Wolf.java @@ -210,6 +210,13 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/net/minecraft/world/entity/animal/goat/Goat.java b/net/minecraft/world/entity/animal/goat/Goat.java -index 9924a39953fb49954d02c771ae1a51411226ceac..16fe9367466372eb7cd0ecf24ba5b7cbc64a820c 100644 +index 302208b566038a3a352ca867dd70a61887bac104..0a018dbfe3750cf91892d8cfb5c0eac18e83d587 100644 --- a/net/minecraft/world/entity/animal/goat/Goat.java +++ b/net/minecraft/world/entity/animal/goat/Goat.java @@ -128,6 +128,13 @@ public class Goat extends Animal { diff --git a/purpur-server/minecraft-patches/features/0018-Toggle-for-water-sensitive-mob-damage.patch b/purpur-server/minecraft-patches/features/0018-Toggle-for-water-sensitive-mob-damage.patch index 070dfd2e2..bdc613a79 100644 --- a/purpur-server/minecraft-patches/features/0018-Toggle-for-water-sensitive-mob-damage.patch +++ b/purpur-server/minecraft-patches/features/0018-Toggle-for-water-sensitive-mob-damage.patch @@ -41,7 +41,7 @@ index ecbec552e5cd1935f57872d2fb502d3e9743e3d8..4fa526496265a85b637136f0fd0692ef public boolean isFlapping() { return !this.isResting() && this.tickCount % 10.0F == 0.0F; diff --git a/net/minecraft/world/entity/animal/Bee.java b/net/minecraft/world/entity/animal/Bee.java -index 6f0b927101f9b5a07a0b6749557f6b0ebf35ae64..d4025093d82cca0c5923058dc0e35c91ae7b40e3 100644 +index 199bd7e9b053a2eac76987ceb5caebc088d1071d..636ff0f4f8415b6ce23d2676781503443c854cfe 100644 --- a/net/minecraft/world/entity/animal/Bee.java +++ b/net/minecraft/world/entity/animal/Bee.java @@ -177,7 +177,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { @@ -210,7 +210,7 @@ index a64b609bf5ce38a252bfa1bcff869f88e14389b5..5e9795f447e88a42909730d383eaa36a public float getWalkTargetValue(BlockPos pos, LevelReader level) { return level.getBlockState(pos.below()).is(Blocks.MYCELIUM) ? 10.0F : level.getPathfindingCostFromLightLevels(pos); diff --git a/net/minecraft/world/entity/animal/Ocelot.java b/net/minecraft/world/entity/animal/Ocelot.java -index c76dff55f28f63be407c438f0c6ed634185d7b6b..4a95ec11da4399282f69630ac933b7e22b4ca550 100644 +index b06697fd64a8962133f0324b2c03b9e9b4f32086..91677415ba66c8de448a26ac4e6afe6bbbad4fa8 100644 --- a/net/minecraft/world/entity/animal/Ocelot.java +++ b/net/minecraft/world/entity/animal/Ocelot.java @@ -94,6 +94,13 @@ public class Ocelot extends Animal { @@ -385,7 +385,7 @@ index 6ee73b798ab306f7c828c9f06ca5b1a96bd96139..dbf3e4db27477afada86e02063a486f7 @Override diff --git a/net/minecraft/world/entity/animal/Squid.java b/net/minecraft/world/entity/animal/Squid.java -index 739b9df3c1c39a3207caa42d6aed7f4ff1741d42..a43cf8ba7a4d5afb23401ccd07d451b35ed80d58 100644 +index 0391ff403391bfe13b907a8b1aae9057474f695b..e9ba9d84177e9c27b9c7c5e6274dfb031f6643c7 100644 --- a/net/minecraft/world/entity/animal/Squid.java +++ b/net/minecraft/world/entity/animal/Squid.java @@ -99,6 +99,13 @@ public class Squid extends AgeableWaterCreature { @@ -439,7 +439,7 @@ index edbccb7ca27aa8a1917eb8b35b3ba8600c91111a..cf297f766340b4ff8ecaf80a9a13b289 this.entityData.set(HOME_POS, homePos); } diff --git a/net/minecraft/world/entity/animal/Wolf.java b/net/minecraft/world/entity/animal/Wolf.java -index 136f2c43272e5a45e473b66656818ed88de1cff3..f2e2cee3fd4a8bdec0c8922170930f81c14dfb32 100644 +index 9d79946497cfc92ff11160b86d5064d86916af36..8b5eaabe77dcf8851b874b82a2d7f64180ac613b 100644 --- a/net/minecraft/world/entity/animal/Wolf.java +++ b/net/minecraft/world/entity/animal/Wolf.java @@ -217,6 +217,13 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/net/minecraft/world/entity/monster/Zombie.java b/net/minecraft/world/entity/monster/Zombie.java -index 98732a5014a1c8a91dbe79d070ce0b58daf1ba1c..5d12bc139c81ca342074c7c745635669020d0300 100644 +index 63446c874e7153dcfb99133145c8b5311d7d86cd..bb8c37c8348172947efe14d48ed9ae203409affa 100644 --- a/net/minecraft/world/entity/monster/Zombie.java +++ b/net/minecraft/world/entity/monster/Zombie.java @@ -139,6 +139,13 @@ public class Zombie extends Monster { @@ -1297,7 +1297,7 @@ index eb82252cd87797927e153974b9280b5eaa251080..2237681f298113bda0556699e19e880f return Monster.createMonsterAttributes() .add(Attributes.MAX_HEALTH, 50.0) diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java -index c301a89f032746487a4e993d920060450433f238..af6ae76248a9894efbecf9e94160f8d215f6ad85 100644 +index 017b54e0b8dec8996c90a3c6651867277dd516df..97e5bb0cc335b23211e78044919282bfabad26a5 100644 --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java @@ -278,6 +278,13 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -1315,7 +1315,7 @@ index c301a89f032746487a4e993d920060450433f238..af6ae76248a9894efbecf9e94160f8d2 public Brain getBrain() { return (Brain)super.getBrain(); diff --git a/net/minecraft/world/entity/npc/WanderingTrader.java b/net/minecraft/world/entity/npc/WanderingTrader.java -index f9755f36f7863b9742fe5b840a8130891ddff7c7..5a87c3c7aca38f3fe4a003b2075f43b0ae1cddea 100644 +index 4ba2921dd99f674344fe3371332c9b23365d3aa2..8046a2d640e7c4d59cb5b9c6dff3bf5f026c7153 100644 --- a/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/net/minecraft/world/entity/npc/WanderingTrader.java @@ -107,6 +107,13 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill diff --git a/purpur-server/minecraft-patches/features/0021-Mobs-always-drop-experience.patch b/purpur-server/minecraft-patches/features/0021-Mobs-always-drop-experience.patch index 19c768b12..48e8a9675 100644 --- a/purpur-server/minecraft-patches/features/0021-Mobs-always-drop-experience.patch +++ b/purpur-server/minecraft-patches/features/0021-Mobs-always-drop-experience.patch @@ -41,7 +41,7 @@ index 4fa526496265a85b637136f0fd0692ef4f570ad6..4ac052a78841939a53dac2afb575cb11 public boolean isFlapping() { return !this.isResting() && this.tickCount % 10.0F == 0.0F; diff --git a/net/minecraft/world/entity/animal/Bee.java b/net/minecraft/world/entity/animal/Bee.java -index d4025093d82cca0c5923058dc0e35c91ae7b40e3..38c95287da10247b0627ce16ad4914232b5a6f06 100644 +index 636ff0f4f8415b6ce23d2676781503443c854cfe..57c50ce5724b073b1aedf4df3129285143097303 100644 --- a/net/minecraft/world/entity/animal/Bee.java +++ b/net/minecraft/world/entity/animal/Bee.java @@ -487,6 +487,13 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { @@ -203,7 +203,7 @@ index 5e9795f447e88a42909730d383eaa36acfaf18f5..3bcd119757dfc579df790fcc8919a363 public float getWalkTargetValue(BlockPos pos, LevelReader level) { return level.getBlockState(pos.below()).is(Blocks.MYCELIUM) ? 10.0F : level.getPathfindingCostFromLightLevels(pos); diff --git a/net/minecraft/world/entity/animal/Ocelot.java b/net/minecraft/world/entity/animal/Ocelot.java -index 4a95ec11da4399282f69630ac933b7e22b4ca550..797b2311d432b1f06f55956d1cc22283090c1e4f 100644 +index 91677415ba66c8de448a26ac4e6afe6bbbad4fa8..681f1256d8bbedc7731fd2906a7f439da4333552 100644 --- a/net/minecraft/world/entity/animal/Ocelot.java +++ b/net/minecraft/world/entity/animal/Ocelot.java @@ -101,6 +101,13 @@ public class Ocelot extends Animal { @@ -383,7 +383,7 @@ index dbf3e4db27477afada86e02063a486f7cec573b5..1b9d4562b73ecdf783ecdaf4f4eff903 protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables diff --git a/net/minecraft/world/entity/animal/Squid.java b/net/minecraft/world/entity/animal/Squid.java -index a43cf8ba7a4d5afb23401ccd07d451b35ed80d58..b384e4973e4986480a41dfe128b944d5b70e71c4 100644 +index e9ba9d84177e9c27b9c7c5e6274dfb031f6643c7..0a103e6f3f6b0ec05c5d22b1258eb6e2f776e7dd 100644 --- a/net/minecraft/world/entity/animal/Squid.java +++ b/net/minecraft/world/entity/animal/Squid.java @@ -106,6 +106,13 @@ public class Squid extends AgeableWaterCreature { @@ -437,7 +437,7 @@ index cf297f766340b4ff8ecaf80a9a13b2899a9870e6..bc6acbc801e5b371859e731b84197363 this.entityData.set(HOME_POS, homePos); } diff --git a/net/minecraft/world/entity/animal/Wolf.java b/net/minecraft/world/entity/animal/Wolf.java -index f2e2cee3fd4a8bdec0c8922170930f81c14dfb32..59ffa6c246cc7f74b79b69bab4d5581f2f42448f 100644 +index 8b5eaabe77dcf8851b874b82a2d7f64180ac613b..ef6c0bf20ad18c050cdeb02ddd6c007dfcf1d6b3 100644 --- a/net/minecraft/world/entity/animal/Wolf.java +++ b/net/minecraft/world/entity/animal/Wolf.java @@ -224,6 +224,13 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/net/minecraft/world/entity/monster/Zombie.java b/net/minecraft/world/entity/monster/Zombie.java -index f8d41ce860c5f48ab9b5e4b79a554dab85d2ba9b..26b57ffdc08a851e4e5cbdeebcc19d62517ba9fa 100644 +index b1da45df27f02395d793e7eafe576f5f92aa3a7b..7af71c777dca26cd94b1807a2a77ea0d30e92976 100644 --- a/net/minecraft/world/entity/monster/Zombie.java +++ b/net/minecraft/world/entity/monster/Zombie.java @@ -147,6 +147,13 @@ public class Zombie extends Monster { @@ -1265,7 +1265,7 @@ index 2237681f298113bda0556699e19e880f4b04a853..4984b9864b63f92bc939b530253e871c return Monster.createMonsterAttributes() .add(Attributes.MAX_HEALTH, 50.0) diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java -index af6ae76248a9894efbecf9e94160f8d215f6ad85..92261f502de7b832845b6e6a12a091801096dc4d 100644 +index 97e5bb0cc335b23211e78044919282bfabad26a5..16fbe4e6521cd4f6baa8f5dd590da0fc749f6585 100644 --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java @@ -285,6 +285,13 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -1283,7 +1283,7 @@ index af6ae76248a9894efbecf9e94160f8d215f6ad85..92261f502de7b832845b6e6a12a09180 public Brain getBrain() { return (Brain)super.getBrain(); diff --git a/net/minecraft/world/entity/npc/WanderingTrader.java b/net/minecraft/world/entity/npc/WanderingTrader.java -index 5a87c3c7aca38f3fe4a003b2075f43b0ae1cddea..63a83fb3b103b81dad26c353babfde2e35636f53 100644 +index 8046a2d640e7c4d59cb5b9c6dff3bf5f026c7153..c3fbcc7956a64d49466874776f257ba27f55f2a4 100644 --- a/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/net/minecraft/world/entity/npc/WanderingTrader.java @@ -114,6 +114,13 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill diff --git a/purpur-server/minecraft-patches/features/0022-config-for-turning-bundles-into-functional-quivers.patch b/purpur-server/minecraft-patches/features/0022-config-for-turning-bundles-into-functional-quivers.patch new file mode 100644 index 000000000..ade1011c2 --- /dev/null +++ b/purpur-server/minecraft-patches/features/0022-config-for-turning-bundles-into-functional-quivers.patch @@ -0,0 +1,184 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: granny +Date: Mon, 16 Oct 2023 21:54:47 -0700 +Subject: [PATCH] config for turning bundles into functional quivers + + +diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java +index db5a2227009bc4d655fc781d5850221f36f2d112..c26846d3b92be4ed8ec40ce21128dfe912f19298 100644 +--- a/net/minecraft/world/entity/LivingEntity.java ++++ b/net/minecraft/world/entity/LivingEntity.java +@@ -4456,6 +4456,11 @@ public abstract class LivingEntity extends Entity implements Attackable { + } + + public ItemStack getProjectile(ItemStack weaponStack) { ++ // Purpur start - config for turning bundles into functional quivers ++ return getProjectile(weaponStack, false); ++ } ++ public ItemStack getProjectile(ItemStack weaponStack, boolean useBundleItemStack) { ++ // Purpur end - config for turning bundles into functional quivers + return ItemStack.EMPTY; + } + +diff --git a/net/minecraft/world/entity/monster/Monster.java b/net/minecraft/world/entity/monster/Monster.java +index c1ebb74b0d4a8e2eb8880ccaf20f0f9bc1940094..4d0916c0ec6c199f9ef359a17cda0891448d07f6 100644 +--- a/net/minecraft/world/entity/monster/Monster.java ++++ b/net/minecraft/world/entity/monster/Monster.java +@@ -144,6 +144,12 @@ public abstract class Monster extends PathfinderMob implements Enemy { + + @Override + public ItemStack getProjectile(ItemStack shootable) { ++ // Purpur start - config for turning bundles into functional quivers ++ return getProjectile(shootable, false); ++ } ++ @Override ++ public ItemStack getProjectile(ItemStack shootable, boolean useBundleItemStack) { ++ // Purpur end - config for turning bundles into functional quivers + if (shootable.getItem() instanceof ProjectileWeaponItem) { + Predicate supportedHeldProjectiles = ((ProjectileWeaponItem)shootable.getItem()).getSupportedHeldProjectiles(); + ItemStack heldProjectile = ProjectileWeaponItem.getHeldProjectile(this, supportedHeldProjectiles); +diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java +index 43657822f0660613078e9afa512000b5255a1537..a5284118fa4c3c2fff52c8220615c9ca848d9af0 100644 +--- a/net/minecraft/world/entity/player/Player.java ++++ b/net/minecraft/world/entity/player/Player.java +@@ -2294,6 +2294,12 @@ public abstract class Player extends LivingEntity { + + @Override + public ItemStack getProjectile(ItemStack shootable) { ++ // Purpur start - config for turning bundles into functional quivers ++ return getProjectile(shootable, false); ++ } ++ @Override ++ public ItemStack getProjectile(ItemStack shootable, boolean useBundleItemStack) { ++ // Purpur end - config for turning bundles into functional quivers + if (!(shootable.getItem() instanceof ProjectileWeaponItem)) { + return ItemStack.EMPTY; + } else { +@@ -2306,6 +2312,39 @@ public abstract class Player extends LivingEntity { + + for (int i = 0; i < this.inventory.getContainerSize(); i++) { + ItemStack item = this.inventory.getItem(i); ++ ++ // Purpur start - config for turning bundles into functional quivers ++ if ((this.level().purpurConfig.bowUseBundleAsQuiver || this.level().purpurConfig.crossbowUseBundleAsQuiver) && !this.abilities.instabuild && item.getItem() instanceof net.minecraft.world.item.BundleItem) { ++ net.minecraft.world.item.component.BundleContents bundleContents = item.get(net.minecraft.core.component.DataComponents.BUNDLE_CONTENTS); ++ if (bundleContents == null || bundleContents.isEmpty()) { ++ continue; ++ } ++ ++ Optional first = bundleContents.itemCopyStream().filter(supportedHeldProjectiles).findFirst(); ++ ++ if (first.isEmpty()) { ++ continue; ++ } ++ ++ ItemStack itemStack = first.get(); ++ if (useBundleItemStack) { ++ net.minecraft.world.item.component.BundleContents.Mutable mutable = new net.minecraft.world.item.component.BundleContents.Mutable(bundleContents); ++ ItemStack itemStack2 = mutable.removeOne(itemStack); ++ if (itemStack2 == null) { ++ continue; ++ } ++ ++ itemStack2.shrink(1); ++ if (itemStack2.getCount() != 0) { ++ mutable.tryInsert(itemStack2); ++ } ++ item.set(net.minecraft.core.component.DataComponents.BUNDLE_CONTENTS, mutable.toImmutable()); ++ } ++ itemStack.setCount(1); ++ return itemStack; ++ } ++ // Purpur end - config for turning bundles into functional quivers ++ + if (supportedHeldProjectiles.test(item)) { + return item; + } +diff --git a/net/minecraft/world/item/BowItem.java b/net/minecraft/world/item/BowItem.java +index b3e003694ce0da357e91ab3ce2b1380f9ab0a32a..186bd391ed3738734ca2d8e82339af0158ae4875 100644 +--- a/net/minecraft/world/item/BowItem.java ++++ b/net/minecraft/world/item/BowItem.java +@@ -27,7 +27,7 @@ public class BowItem extends ProjectileWeaponItem { + if (!(entity instanceof Player player)) { + return false; + } else { +- ItemStack projectile = player.getProjectile(stack); ++ ItemStack projectile = player.getProjectile(stack, true); // Purpur - config for turning bundles into functional quivers + // Purpur start - Infinity bow settings + if (level.purpurConfig.infinityWorksWithoutArrows && projectile.isEmpty() && net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.INFINITY, stack) > 0) { + projectile = new ItemStack(Items.ARROW); +diff --git a/net/minecraft/world/item/BundleItem.java b/net/minecraft/world/item/BundleItem.java +index 966029b761bcb31113b167831fe7f4f2dea4b17d..eda25cc71b4804d805b1a7f875f823b20efc754b 100644 +--- a/net/minecraft/world/item/BundleItem.java ++++ b/net/minecraft/world/item/BundleItem.java +@@ -131,7 +131,7 @@ public class BundleItem extends Item { + } + + private void dropContent(Level level, Player player, ItemStack stack) { +- if (this.dropContent(stack, player)) { ++ if (!(level.purpurConfig.bowUseBundleAsQuiver || level.purpurConfig.bowUseBundleAsQuiver) && this.dropContent(stack, player)) { // Purpur - config for turning bundles into functional quivers + playDropContentsSound(level, player); + player.awardStat(Stats.ITEM_USED.get(this)); + } +diff --git a/net/minecraft/world/item/CrossbowItem.java b/net/minecraft/world/item/CrossbowItem.java +index 1131e984fd30e40c1b99054b5db9462ffe55b5f1..c9dbe63316cad0437f50fa3f7ffe345ec1906752 100644 +--- a/net/minecraft/world/item/CrossbowItem.java ++++ b/net/minecraft/world/item/CrossbowItem.java +@@ -72,7 +72,7 @@ public class CrossbowItem extends ProjectileWeaponItem { + if (chargedProjectiles != null && !chargedProjectiles.isEmpty()) { + this.performShooting(level, player, hand, itemInHand, getShootingPower(chargedProjectiles), (float) level.purpurConfig.crossbowProjectileOffset, null); // Purpur - Projectile offset config + return InteractionResult.CONSUME; +- } else if (!player.getProjectile(itemInHand).isEmpty()) { ++ } else if (!player.getProjectile(itemInHand).isEmpty()) { // Purpur - config for turning bundles into functional quivers + this.startSoundPlayed = false; + this.midLoadSoundPlayed = false; + player.startUsingItem(hand); +@@ -124,7 +124,7 @@ public class CrossbowItem extends ProjectileWeaponItem { + return CrossbowItem.tryLoadProjectiles(shooter, crossbowStack, true); + } + private static boolean tryLoadProjectiles(LivingEntity shooter, ItemStack crossbowStack, boolean consume) { +- List list = draw(crossbowStack, shooter.getProjectile(crossbowStack), shooter, consume); ++ List list = draw(crossbowStack, shooter.getProjectile(crossbowStack, true), shooter, consume); // Purpur - config for turning bundles into functional quivers + // Paper end - Add EntityLoadCrossbowEvent + if (!list.isEmpty()) { + crossbowStack.set(DataComponents.CHARGED_PROJECTILES, ChargedProjectiles.of(list)); +diff --git a/net/minecraft/world/item/component/BundleContents.java b/net/minecraft/world/item/component/BundleContents.java +index fca2dd0fb9ff4ff795a01de722fbb31dc02682fa..6fb9becef49bd4161c7829d240dd9e786f2226b5 100644 +--- a/net/minecraft/world/item/component/BundleContents.java ++++ b/net/minecraft/world/item/component/BundleContents.java +@@ -163,7 +163,12 @@ public final class BundleContents implements TooltipComponent { + } + + private int findStackIndex(ItemStack stack) { +- if (!stack.isStackable()) { ++ // Purpur start - config for turning bundles into functional quivers ++ return this.findStackIndex(stack, false); ++ } ++ private int findStackIndex(ItemStack stack, boolean skipStackableCheck) { ++ if (!skipStackableCheck && !stack.isStackable()) { ++ // Purpur end - config for turning bundles into functional quivers + return -1; + } else { + for (int i = 0; i < this.items.size(); i++) { +@@ -223,11 +228,20 @@ public final class BundleContents implements TooltipComponent { + + @Nullable + public ItemStack removeOne() { ++ // Purpur start - config for turning bundles into functional quivers ++ return this.removeOne(null); ++ } ++ @Nullable ++ public ItemStack removeOne(ItemStack itemStack2) { ++ // Purpur end - config for turning bundles into functional quivers + if (this.items.isEmpty()) { + return null; + } else { + int i = this.selectedItem != -1 && this.selectedItem < this.items.size() ? this.selectedItem : 0; +- ItemStack itemStack = this.items.remove(i).copy(); ++ // Purpur start - config for turning bundles into functional quivers ++ int stackIndex = itemStack2 != null ? this.findStackIndex(itemStack2, true) : -1; ++ ItemStack itemStack = this.items.remove(stackIndex == -1 ? i : stackIndex).copy(); ++ // Purpur end - config for turning bundles into functional quivers + this.weight = this.weight.subtract(BundleContents.getWeight(itemStack).multiplyBy(Fraction.getFraction(itemStack.getCount(), 1))); + this.toggleSelectedItem(-1); + return itemStack; diff --git a/purpur-server/paper-patches/features/0002-Ridables.patch b/purpur-server/paper-patches/features/0002-Ridables.patch index 39fb5ad6b..fe101257f 100644 --- a/purpur-server/paper-patches/features/0002-Ridables.patch +++ b/purpur-server/paper-patches/features/0002-Ridables.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Ridables diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index b0be1ef065986c7e8aa94dde814a303d1dec5529..c843d28de6cdd7fa25cfbfe7cf071de063df05f8 100644 +index fda26c1695e22812e9de6828322b3252116df9ed..7615f19a3a5271ce27b16f1803f071196327f249 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -1345,4 +1345,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { diff --git a/purpur-server/paper-patches/features/0003-Barrels-and-enderchests-6-rows.patch b/purpur-server/paper-patches/features/0003-Barrels-and-enderchests-6-rows.patch index 372c10b75..3ee77592d 100644 --- a/purpur-server/paper-patches/features/0003-Barrels-and-enderchests-6-rows.patch +++ b/purpur-server/paper-patches/features/0003-Barrels-and-enderchests-6-rows.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Barrels and enderchests 6 rows diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java -index 6d3f9d5dab6c9a2860ae31cae24310aa2d62da7c..4f29c579f94efe59a8c78520d75676fc4875e2f0 100644 +index 1ce328bed5cf3d087a3f7dc9236153381d758493..364afc994443f6c64af4f9ebbe210da63e18681c 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java @@ -145,8 +145,19 @@ public class CraftContainer extends AbstractContainerMenu { @@ -30,7 +30,7 @@ index 6d3f9d5dab6c9a2860ae31cae24310aa2d62da7c..4f29c579f94efe59a8c78520d75676fc case DISPENSER: case DROPPER: diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java -index c6159c70f7a37b9bffe268b91905ce848d1d2927..d02adaaa6fbdc1c0eff44cb4a1f1642f9575a821 100644 +index c6159c70f7a37b9bffe268b91905ce848d1d2927..8b4f8a475faafe3b8a479160888145c4aa603a27 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java @@ -84,7 +84,7 @@ public class CraftInventory implements Inventory { diff --git a/purpur-server/paper-patches/features/0005-Add-EntityTeleportHinderedEvent.patch b/purpur-server/paper-patches/features/0005-Add-EntityTeleportHinderedEvent.patch index 49b17a617..44cea6048 100644 --- a/purpur-server/paper-patches/features/0005-Add-EntityTeleportHinderedEvent.patch +++ b/purpur-server/paper-patches/features/0005-Add-EntityTeleportHinderedEvent.patch @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index c843d28de6cdd7fa25cfbfe7cf071de063df05f8..3bb597cbce650e408273c07a7c120845c99b053b 100644 +index 7615f19a3a5271ce27b16f1803f071196327f249..5d8b2a917c16458b03067003c06cdf3fb49a682d 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -261,6 +261,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { diff --git a/purpur-server/paper-patches/features/0006-API-for-any-mob-to-burn-daylight.patch b/purpur-server/paper-patches/features/0006-API-for-any-mob-to-burn-daylight.patch index 98be00b6e..63ed5b913 100644 --- a/purpur-server/paper-patches/features/0006-API-for-any-mob-to-burn-daylight.patch +++ b/purpur-server/paper-patches/features/0006-API-for-any-mob-to-burn-daylight.patch @@ -6,7 +6,7 @@ Subject: [PATCH] API for any mob to burn daylight Co-authored by: Encode42 diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 3bb597cbce650e408273c07a7c120845c99b053b..dca2761fe4765c6e95b5db0d0cb5c818eb8697b4 100644 +index 5d8b2a917c16458b03067003c06cdf3fb49a682d..0d46585c0128cea7265870de5fe260681c65d7c3 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -102,6 +102,13 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { diff --git a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index 529474df7..cfc0c0b2c 100644 --- a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -251,6 +251,8 @@ private void explosionSettings() { public boolean snowballExtinguishesFire = false; public boolean snowballExtinguishesCandles = false; public boolean snowballExtinguishesCampfires = false; + public boolean bowUseBundleAsQuiver = false; + public boolean crossbowUseBundleAsQuiver = false; private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { @@ -303,6 +305,8 @@ private void itemSettings() { snowballExtinguishesFire = getBoolean("gameplay-mechanics.item.snowball.extinguish.fire", snowballExtinguishesFire); snowballExtinguishesCandles = getBoolean("gameplay-mechanics.item.snowball.extinguish.candles", snowballExtinguishesCandles); snowballExtinguishesCampfires = getBoolean("gameplay-mechanics.item.snowball.extinguish.campfires", snowballExtinguishesCampfires); + bowUseBundleAsQuiver = getBoolean("gameplay-mechanics.item.bow.use-bundle-as-quiver", bowUseBundleAsQuiver); + crossbowUseBundleAsQuiver = getBoolean("gameplay-mechanics.item.crossbow.use-bundle-as-quiver", crossbowUseBundleAsQuiver); } public double minecartMaxSpeed = 0.4D;