From 4385807b7e9c9f5ed8b2442f94b2356351528b67 Mon Sep 17 00:00:00 2001 From: granny Date: Thu, 4 Dec 2025 20:27:16 -0800 Subject: [PATCH] make it compile --- .../features/0001-Ridables.patch | 12 +++---- .../features/0004-Giants-AI-settings.patch | 10 +++--- ...-Minecart-settings-and-WASD-controls.patch | 4 +-- ...0007-Villagers-follow-emerald-blocks.patch | 14 ++++---- .../0008-Implement-elytra-settings.patch | 12 +++---- ...e-entity-breeding-times-configurable.patch | 36 +++++++++++++++++++ ...Villager-Clerics-to-farm-Nether-Wart.patch | 6 ++-- ...turally-aggressive-to-players-chance.patch | 4 +-- .../activation/ActivationRange.java.patch | 2 +- .../server/level/ServerLevel.java.patch | 2 +- .../ServerGamePacketListenerImpl.java.patch | 2 +- .../world/entity/monster/Ravager.java.patch | 2 +- .../entity/npc/villager/Villager.java.patch | 4 +-- .../level/block/TurtleEggBlock.java.patch | 2 +- .../EnchantedCountIncreaseFunction.java.patch | 2 +- .../craftbukkit/CraftOfflinePlayer.java.patch | 2 +- .../purpurmc/purpur/PurpurWorldConfig.java | 21 +++++++++++ .../purpur/command/CompassCommand.java | 3 +- .../purpur/command/CreditsCommand.java | 5 +-- .../purpurmc/purpur/command/DemoCommand.java | 5 +-- .../purpurmc/purpur/command/PingCommand.java | 5 +-- .../purpur/command/RamBarCommand.java | 5 +-- .../purpurmc/purpur/command/RamCommand.java | 3 +- .../purpur/command/TPSBarCommand.java | 5 +-- .../purpur/command/UptimeCommand.java | 3 +- 25 files changed, 118 insertions(+), 53 deletions(-) diff --git a/purpur-server/minecraft-patches/features/0001-Ridables.patch b/purpur-server/minecraft-patches/features/0001-Ridables.patch index 7f7c88fd3..8eb2944eb 100644 --- a/purpur-server/minecraft-patches/features/0001-Ridables.patch +++ b/purpur-server/minecraft-patches/features/0001-Ridables.patch @@ -30,7 +30,7 @@ index fb65832d3d820aa48bb8fc0efecfd659bb8e2755..cf817b5bab8e936bd40477d40359c35f /* Drop global time updates if (this.tickCount % 20 == 0) { diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java -index 394e5baaec5ae7730833d07cc4140ac498d7e4b1..f8fece07c5e1a721cfc826b48b0b4944b4859be9 100644 +index c18844ca7c9840f28fe5167d67387ebaf758a9da..c99ba8c3eba14efcf7906fe2b42e4db1c73c90fe 100644 --- a/net/minecraft/server/level/ServerLevel.java +++ b/net/minecraft/server/level/ServerLevel.java @@ -230,6 +230,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @@ -62,7 +62,7 @@ index 9ec896ad8e95d7822095c42054e76e7a5db91481..2eba1b0ac8b4a0bb34d04b81c4c279db private void updatePlayerAttributes() { diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 4b4a4698673725b058072034fb525eeb941c0489..b89c73e74216333f5ac70ee9c80bdbea61cc47b5 100644 +index a7e64b698d8db843cac9e1b0ae86c9e7aa8db492..bf534674d9796a985534538301523723190a6277 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2902,6 +2902,8 @@ public class ServerGamePacketListenerImpl @@ -3799,7 +3799,7 @@ index d26b7970490a2a108affee11c3fb74e38509d92b..64e55d48bc81d6237970e86e6e1cc719 Phantom.this.setYRot(Phantom.this.getYRot() + 180.0F); this.speed = 0.1F; diff --git a/net/minecraft/world/entity/monster/Ravager.java b/net/minecraft/world/entity/monster/Ravager.java -index ab40d05ed4c5099c57a62c5dbaa45308b2bae1c3..6fa5fc86cfb2493a8bcd0dae92be635b7c1f6fe0 100644 +index a10c693a8948d1b7c4bd06b957a08a9cea9170ad..f7807aac5a8f9c92ba77ac38c469ef14948197ac 100644 --- a/net/minecraft/world/entity/monster/Ravager.java +++ b/net/minecraft/world/entity/monster/Ravager.java @@ -72,15 +72,40 @@ public class Ravager extends Raider { @@ -3833,7 +3833,7 @@ index ab40d05ed4c5099c57a62c5dbaa45308b2bae1c3..6fa5fc86cfb2493a8bcd0dae92be635b protected void registerGoals() { super.registerGoals(); this.goalSelector.addGoal(0, new FloatGoal(this)); - if (level().purpurConfig.ravagerAvoidRabbits) this.goalSelector.addGoal(3, new net.minecraft.world.entity.ai.goal.AvoidEntityGoal<>(this, net.minecraft.world.entity.animal.Rabbit.class, 6.0F, 1.0D, 1.2D)); // Purpur - option to make ravagers afraid of rabbits + if (level().purpurConfig.ravagerAvoidRabbits) this.goalSelector.addGoal(3, new net.minecraft.world.entity.ai.goal.AvoidEntityGoal<>(this, net.minecraft.world.entity.animal.rabbit.Rabbit.class, 6.0F, 1.0D, 1.2D)); // Purpur - option to make ravagers afraid of rabbits + this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables this.goalSelector.addGoal(4, new MeleeAttackGoal(this, 1.0, true)); this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 0.4)); @@ -5076,7 +5076,7 @@ index ef6a4aff03c1a85535b15e653714751e79f61090..e2c5301a465e28cea057f9afec7e9d78 protected void addBehaviourGoals() { this.goalSelector.addGoal(1, new SpearUseGoal<>(this, 1.0, 1.0, 10.0F, 2.0F)); diff --git a/net/minecraft/world/entity/npc/villager/Villager.java b/net/minecraft/world/entity/npc/villager/Villager.java -index 9d28818f885c9fb6cbd78073c779e46ab8a5abe2..4b4acd05ab94d5beadd20989b39b267ecb56ad8b 100644 +index e117ae1b114c7e2ca314a00335473efc41137f7f..6d4ef7b5d64639eb7fe400b2ed612c3b3552aa52 100644 --- a/net/minecraft/world/entity/npc/villager/Villager.java +++ b/net/minecraft/world/entity/npc/villager/Villager.java @@ -250,6 +250,28 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -5116,7 +5116,7 @@ index 9d28818f885c9fb6cbd78073c779e46ab8a5abe2..4b4acd05ab94d5beadd20989b39b267e + if (!inactive && (getRider() == null || !this.isControllable())) { // Purpur - Ridables this.getBrain().tick(level, this); // Paper - EAR 2 } - else if (this.isLobotomized && shouldRestock()) restock(); + else if (this.isLobotomized && shouldRestock(level)) restock(); @@ -417,7 +439,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler return super.mobInteract(player, hand); } else if (this.isBaby()) { diff --git a/purpur-server/minecraft-patches/features/0004-Giants-AI-settings.patch b/purpur-server/minecraft-patches/features/0004-Giants-AI-settings.patch index e698b8295..3ca516628 100644 --- a/purpur-server/minecraft-patches/features/0004-Giants-AI-settings.patch +++ b/purpur-server/minecraft-patches/features/0004-Giants-AI-settings.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Giants AI settings diff --git a/net/minecraft/world/entity/monster/Giant.java b/net/minecraft/world/entity/monster/Giant.java -index 416bb85fc87b5f9e372f33df8fe27f12e83834b9..e6fb01e4e2146d6c6971d80af0f101d20c03950a 100644 +index 416bb85fc87b5f9e372f33df8fe27f12e83834b9..40cf8f44a6b01d45306dab4ba4f9a7ea7c6590a9 100644 --- a/net/minecraft/world/entity/monster/Giant.java +++ b/net/minecraft/world/entity/monster/Giant.java @@ -30,8 +30,25 @@ public class Giant extends Monster { @@ -25,11 +25,11 @@ index 416bb85fc87b5f9e372f33df8fe27f12e83834b9..e6fb01e4e2146d6c6971d80af0f101d2 + if (level().purpurConfig.giantHaveHostileAI) { + this.goalSelector.addGoal(2, new net.minecraft.world.entity.ai.goal.MeleeAttackGoal(this, 1.0D, false)); + this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); -+ this.targetSelector.addGoal(1, new net.minecraft.world.entity.ai.goal.target.HurtByTargetGoal(this).setAlertOthers(ZombifiedPiglin.class)); ++ this.targetSelector.addGoal(1, new net.minecraft.world.entity.ai.goal.target.HurtByTargetGoal(this).setAlertOthers(net.minecraft.world.entity.monster.zombie.ZombifiedPiglin.class)); + this.targetSelector.addGoal(2, new net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal<>(this, net.minecraft.world.entity.player.Player.class, true)); -+ this.targetSelector.addGoal(3, new net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal<>(this, net.minecraft.world.entity.npc.Villager.class, false)); -+ this.targetSelector.addGoal(4, new net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal<>(this, net.minecraft.world.entity.animal.IronGolem.class, true)); -+ this.targetSelector.addGoal(5, new net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal<>(this, net.minecraft.world.entity.animal.Turtle.class, true)); ++ this.targetSelector.addGoal(3, new net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal<>(this, net.minecraft.world.entity.npc.villager.Villager.class, false)); ++ this.targetSelector.addGoal(4, new net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal<>(this, net.minecraft.world.entity.animal.golem.IronGolem.class, true)); ++ this.targetSelector.addGoal(5, new net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal<>(this, net.minecraft.world.entity.animal.turtle.Turtle.class, true)); + } + } + // Purpur end - Giants AI settings 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 e5dafad45..790c8a321 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 2eba1b0ac8b4a0bb34d04b81c4c279db6e716b3b..5569223c99ad6563687f67f899d43189fd81776e 100644 +index 2eba1b0ac8b4a0bb34d04b81c4c279db6e716b3b..01efe1fbd185ebd3a60c6bbb7aa2d82817506e7d 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java @@ -1311,6 +1311,11 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -13,7 +13,7 @@ index 2eba1b0ac8b4a0bb34d04b81c4c279db6e716b3b..5569223c99ad6563687f67f899d43189 // Purpur start - Add boat fall damage config if (damageSource.is(net.minecraft.tags.DamageTypeTags.IS_FALL)) { + // Purpur start - Minecart settings and WASD controls -+ if (getRootVehicle() instanceof net.minecraft.world.entity.vehicle.AbstractMinecart && level().purpurConfig.minecartControllable && !level().purpurConfig.minecartControllableFallDamage) { ++ if (getRootVehicle() instanceof AbstractMinecart && level().purpurConfig.minecartControllable && !level().purpurConfig.minecartControllableFallDamage) { + return false; + } + // Purpur end - Minecart settings and WASD controls 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 770512a28..cb6f356d1 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 @@ -5,7 +5,7 @@ Subject: [PATCH] Villagers follow emerald blocks diff --git a/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java b/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java -index 686776bb00560f9da8838bd5f8dd64aaddfa7a2b..9bc35ca825e300e82d2d108de70622f8f453bff6 100644 +index 686776bb00560f9da8838bd5f8dd64aaddfa7a2b..ccdd439a89b7e7e10ee960cfe1e5e119d5367799 100644 --- a/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java +++ b/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java @@ -173,7 +173,7 @@ public class DefaultAttributes { @@ -13,12 +13,12 @@ index 686776bb00560f9da8838bd5f8dd64aaddfa7a2b..9bc35ca825e300e82d2d108de70622f8 .put(EntityType.VINDICATOR, Vindicator.createAttributes().build()) .put(EntityType.WARDEN, Warden.createAttributes().build()) - .put(EntityType.WANDERING_TRADER, Mob.createMobAttributes().build()) -+ .put(EntityType.WANDERING_TRADER, net.minecraft.world.entity.npc.WanderingTrader.createAttributes().build()) // Purpur - Villagers follow emerald blocks ++ .put(EntityType.WANDERING_TRADER, net.minecraft.world.entity.npc.wanderingtrader.WanderingTrader.createAttributes().build()) // Purpur - Villagers follow emerald blocks .put(EntityType.WITCH, Witch.createAttributes().build()) .put(EntityType.WITHER, WitherBoss.createAttributes().build()) .put(EntityType.WITHER_SKELETON, AbstractSkeleton.createAttributes().build()) diff --git a/net/minecraft/world/entity/ai/goal/TemptGoal.java b/net/minecraft/world/entity/ai/goal/TemptGoal.java -index 18030dc04eb7d7971e457637b5320b1e41665658..1473da28222a4a1d465c5b5d0493fcdac81cd274 100644 +index 18030dc04eb7d7971e457637b5320b1e41665658..60ebd57de496eba6ad307195ffacd3b7fc4149ff 100644 --- a/net/minecraft/world/entity/ai/goal/TemptGoal.java +++ b/net/minecraft/world/entity/ai/goal/TemptGoal.java @@ -70,7 +70,7 @@ public class TemptGoal extends Goal { @@ -26,24 +26,24 @@ index 18030dc04eb7d7971e457637b5320b1e41665658..1473da28222a4a1d465c5b5d0493fcda private boolean shouldFollow(LivingEntity entity) { - return this.items.test(entity.getMainHandItem()) || this.items.test(entity.getOffhandItem()); -+ return (this.items.test(entity.getMainHandItem()) || this.items.test(entity.getOffhandItem())) && (!(this.mob instanceof net.minecraft.world.entity.npc.Villager villager) || !villager.isSleeping()); // Purpur - Villagers follow emerald blocks ++ return (this.items.test(entity.getMainHandItem()) || this.items.test(entity.getOffhandItem())) && (!(this.mob instanceof net.minecraft.world.entity.npc.villager.Villager villager) || !villager.isSleeping()); // Purpur - Villagers follow emerald blocks } @Override diff --git a/net/minecraft/world/entity/npc/villager/AbstractVillager.java b/net/minecraft/world/entity/npc/villager/AbstractVillager.java -index fa8f1ea38192f9ad0a961a53399f295d83af7721..397cf33790494d84d7fc69234eae50ae154b0212 100644 +index fa8f1ea38192f9ad0a961a53399f295d83af7721..05d1a859e1aee639ad9572f2369e6db3c3d7a111 100644 --- a/net/minecraft/world/entity/npc/villager/AbstractVillager.java +++ b/net/minecraft/world/entity/npc/villager/AbstractVillager.java @@ -38,6 +38,7 @@ import net.minecraft.world.phys.Vec3; import org.jspecify.annotations.Nullable; public abstract class AbstractVillager extends AgeableMob implements InventoryCarrier, Npc, Merchant { -+ static final net.minecraft.world.item.crafting.Ingredient TEMPT_ITEMS = net.minecraft.world.item.crafting.Ingredient.of(net.minecraft.world.level.block.Blocks.EMERALD_BLOCK.asItem()); // Purpur - Villagers follow emerald blocks ++ public static final net.minecraft.world.item.crafting.Ingredient TEMPT_ITEMS = net.minecraft.world.item.crafting.Ingredient.of(net.minecraft.world.level.block.Blocks.EMERALD_BLOCK.asItem()); // Purpur - Villagers follow emerald blocks private static final EntityDataAccessor DATA_UNHAPPY_COUNTER = SynchedEntityData.defineId(AbstractVillager.class, EntityDataSerializers.INT); public static final int VILLAGER_SLOT_OFFSET = 300; private static final int VILLAGER_INVENTORY_SIZE = 8; diff --git a/net/minecraft/world/entity/npc/villager/Villager.java b/net/minecraft/world/entity/npc/villager/Villager.java -index 2e4e5164ee59ee45ce56e39c305c200a636d4046..bad2d93118b04d5b41626bf75a05cf469d6fd2e8 100644 +index 6f9658af51f1f30434756f871cf6ab5cd2f3a7ea..02836bd2e8fda563877d3014ab839734aebc7457 100644 --- a/net/minecraft/world/entity/npc/villager/Villager.java +++ b/net/minecraft/world/entity/npc/villager/Villager.java @@ -269,6 +269,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler diff --git a/purpur-server/minecraft-patches/features/0008-Implement-elytra-settings.patch b/purpur-server/minecraft-patches/features/0008-Implement-elytra-settings.patch index 648745f2c..1384c26ae 100644 --- a/purpur-server/minecraft-patches/features/0008-Implement-elytra-settings.patch +++ b/purpur-server/minecraft-patches/features/0008-Implement-elytra-settings.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Implement elytra settings diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index a2879705bf847dfc1453206746377895beac5b4b..e04320155173caa8ce8f998477f36a6b36de935c 100644 +index 983aea0bb8c581f06030adf74f0f7962f99c3c2a..c0a686ba573642f8f666db7c1636e29a770e9c05 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java @@ -3883,7 +3883,18 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin @@ -29,7 +29,7 @@ index a2879705bf847dfc1453206746377895beac5b4b..e04320155173caa8ce8f998477f36a6b this.gameEvent(GameEvent.ELYTRA_GLIDE); diff --git a/net/minecraft/world/item/FireworkRocketItem.java b/net/minecraft/world/item/FireworkRocketItem.java -index 2c597e20c1ff587f2eadef600bedb9e01b999bbf..1cad4997455ab1a17fc38da06a9ca0ec5c21b062 100644 +index 2c597e20c1ff587f2eadef600bedb9e01b999bbf..e548f7161f14d7dc02d6882c3639ff65d59d7b37 100644 --- a/net/minecraft/world/item/FireworkRocketItem.java +++ b/net/minecraft/world/item/FireworkRocketItem.java @@ -73,6 +73,17 @@ public class FireworkRocketItem extends Item implements ProjectileItem { @@ -39,7 +39,7 @@ index 2c597e20c1ff587f2eadef600bedb9e01b999bbf..1cad4997455ab1a17fc38da06a9ca0ec + // Purpur start - Implement elytra settings + if (level.purpurConfig.elytraDamagePerFireworkBoost > 0) { + java.util.List list = net.minecraft.world.entity.EquipmentSlot.VALUES.stream().filter((enumitemslot) -> net.minecraft.world.entity.LivingEntity.canGlideUsing(player.getItemBySlot(enumitemslot), enumitemslot)).toList(); -+ net.minecraft.world.entity.EquipmentSlot enumitemslot = net.minecraft.Util.getRandom(list, player.random); ++ net.minecraft.world.entity.EquipmentSlot enumitemslot = net.minecraft.util.Util.getRandom(list, player.random); + + ItemStack glideItem = player.getItemBySlot(enumitemslot); + if (player.canGlide()) { @@ -51,7 +51,7 @@ index 2c597e20c1ff587f2eadef600bedb9e01b999bbf..1cad4997455ab1a17fc38da06a9ca0ec itemInHand.shrink(1); // Moved up from below } else { diff --git a/net/minecraft/world/item/ItemStack.java b/net/minecraft/world/item/ItemStack.java -index 54f1ab1e63064c2b26993db5390f25be9809c5a8..70999b29944c821d8e165333b833fddba66c3f60 100644 +index b8e38ce9b5c4b11e5bcbe6cf5603d6d39454759c..fd90ba8eba88c8d4fa372cb1047e0af8528f914d 100644 --- a/net/minecraft/world/item/ItemStack.java +++ b/net/minecraft/world/item/ItemStack.java @@ -702,6 +702,14 @@ public final class ItemStack implements DataComponentHolder { @@ -70,7 +70,7 @@ index 54f1ab1e63064c2b26993db5390f25be9809c5a8..70999b29944c821d8e165333b833fddb onBreak.accept(item); } diff --git a/net/minecraft/world/item/TridentItem.java b/net/minecraft/world/item/TridentItem.java -index b87861c089f849e855d10c15ede53fd7c9e6a47c..5dcac1c181ce0f811152bb32fd84c39fbcaf812f 100644 +index b87861c089f849e855d10c15ede53fd7c9e6a47c..633bb1a6d69b55717a9a07978b92f625ff5d066a 100644 --- a/net/minecraft/world/item/TridentItem.java +++ b/net/minecraft/world/item/TridentItem.java @@ -126,6 +126,17 @@ public class TridentItem extends Item implements ProjectileItem { @@ -80,7 +80,7 @@ index b87861c089f849e855d10c15ede53fd7c9e6a47c..5dcac1c181ce0f811152bb32fd84c39f + // Purpur start - Implement elytra settings + List list = net.minecraft.world.entity.EquipmentSlot.VALUES.stream().filter((enumitemslot) -> LivingEntity.canGlideUsing(entity.getItemBySlot(enumitemslot), enumitemslot)).toList(); + if (!list.isEmpty()) { -+ net.minecraft.world.entity.EquipmentSlot enumitemslot = net.minecraft.Util.getRandom(list, entity.random); ++ net.minecraft.world.entity.EquipmentSlot enumitemslot = net.minecraft.util.Util.getRandom(list, entity.random); + ItemStack glideItem = entity.getItemBySlot(enumitemslot); + if (glideItem.has(net.minecraft.core.component.DataComponents.GLIDER) && level.purpurConfig.elytraDamagePerTridentBoost > 0) { + glideItem.hurtAndBreak(level.purpurConfig.elytraDamagePerTridentBoost, entity, enumitemslot); diff --git a/purpur-server/minecraft-patches/features/0012-Make-entity-breeding-times-configurable.patch b/purpur-server/minecraft-patches/features/0012-Make-entity-breeding-times-configurable.patch index 14d3af828..3cf542c67 100644 --- a/purpur-server/minecraft-patches/features/0012-Make-entity-breeding-times-configurable.patch +++ b/purpur-server/minecraft-patches/features/0012-Make-entity-breeding-times-configurable.patch @@ -419,6 +419,42 @@ index cd888e070a72ff46d35a4425a0013c617b31e159..30204224ed83f6d3cfd64640b332b23c @Override protected void ageBoundaryReached() { if (this.isBaby()) { +diff --git a/net/minecraft/world/entity/animal/nautilus/Nautilus.java b/net/minecraft/world/entity/animal/nautilus/Nautilus.java +index a02a4b47cf02cd7eaa76d25af2dccb50ad884504..a941cb9843fcf8d008ae846dcab95e32d823a1b2 100644 +--- a/net/minecraft/world/entity/animal/nautilus/Nautilus.java ++++ b/net/minecraft/world/entity/animal/nautilus/Nautilus.java +@@ -21,6 +21,13 @@ public class Nautilus extends AbstractNautilus { + super(type, level); + } + ++ // Purpur start - Make entity breeding times configurable ++ @Override ++ public int getPurpurBreedTime() { ++ return this.level().purpurConfig.nautilusBreedingTicks; ++ } ++ // Purpur end - Make entity breeding times configurable ++ + @Override + protected Brain.Provider brainProvider() { + return NautilusAi.brainProvider(); +diff --git a/net/minecraft/world/entity/animal/nautilus/ZombieNautilus.java b/net/minecraft/world/entity/animal/nautilus/ZombieNautilus.java +index 83c16a44b230efd010e06cabb428954d157cea47..9e2b703d23a044fecdbc544588079c345fd376c7 100644 +--- a/net/minecraft/world/entity/animal/nautilus/ZombieNautilus.java ++++ b/net/minecraft/world/entity/animal/nautilus/ZombieNautilus.java +@@ -43,6 +43,13 @@ public class ZombieNautilus extends AbstractNautilus { + super(type, level); + } + ++ // Purpur start - Make entity breeding times configurable ++ @Override ++ public int getPurpurBreedTime() { ++ return 6000; ++ } ++ // Purpur end - Make entity breeding times configurable ++ + public static AttributeSupplier.Builder createAttributes() { + return AbstractNautilus.createAttributes().add(Attributes.MOVEMENT_SPEED, 1.1F); + } diff --git a/net/minecraft/world/entity/animal/panda/Panda.java b/net/minecraft/world/entity/animal/panda/Panda.java index d5060fb8e9a711e6230f2c4950521d8b4f5c01d2..163fe697f57459b36885fa3a18f41370347cab38 100644 --- a/net/minecraft/world/entity/animal/panda/Panda.java diff --git a/purpur-server/minecraft-patches/features/0014-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch b/purpur-server/minecraft-patches/features/0014-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch index 499efb9f9..5376bc221 100644 --- a/purpur-server/minecraft-patches/features/0014-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch +++ b/purpur-server/minecraft-patches/features/0014-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch @@ -108,7 +108,7 @@ index bb3ac5297860c8af6e213d10fdf5144086e9474b..0e72601781235119d62fe74420153b98 } else { workAtPoi = new WorkAtPoi(); diff --git a/net/minecraft/world/entity/ai/sensing/SecondaryPoiSensor.java b/net/minecraft/world/entity/ai/sensing/SecondaryPoiSensor.java -index 39a9e9a6f6dfddbf47a7f96150ef832efe61f89e..bcce12389c1cd290066bd86b85355292c22e921a 100644 +index 39a9e9a6f6dfddbf47a7f96150ef832efe61f89e..c268817b170bd54898bb5f8c2e2e12c0faa7eb1e 100644 --- a/net/minecraft/world/entity/ai/sensing/SecondaryPoiSensor.java +++ b/net/minecraft/world/entity/ai/sensing/SecondaryPoiSensor.java @@ -22,6 +22,13 @@ public class SecondaryPoiSensor extends Sensor { @@ -117,7 +117,7 @@ index 39a9e9a6f6dfddbf47a7f96150ef832efe61f89e..bcce12389c1cd290066bd86b85355292 protected void doTick(ServerLevel level, Villager entity) { + // Purpur start - Option for Villager Clerics to farm Nether Wart - make sure clerics don't wander to soul sand when the option is off + Brain brain = entity.getBrain(); -+ if (!level.purpurConfig.villagerClericsFarmWarts && entity.getVillagerData().profession().is(net.minecraft.world.entity.npc.VillagerProfession.CLERIC)) { ++ if (!level.purpurConfig.villagerClericsFarmWarts && entity.getVillagerData().profession().is(net.minecraft.world.entity.npc.villager.VillagerProfession.CLERIC)) { + brain.eraseMemory(MemoryModuleType.SECONDARY_JOB_SITE); + return; + } @@ -135,7 +135,7 @@ index 39a9e9a6f6dfddbf47a7f96150ef832efe61f89e..bcce12389c1cd290066bd86b85355292 brain.setMemory(MemoryModuleType.SECONDARY_JOB_SITE, list); } else { diff --git a/net/minecraft/world/entity/npc/villager/Villager.java b/net/minecraft/world/entity/npc/villager/Villager.java -index bad2d93118b04d5b41626bf75a05cf469d6fd2e8..810f1dc6506ca037363060aec1c90b9fc1602cd8 100644 +index 02836bd2e8fda563877d3014ab839734aebc7457..ed6642023fccbc8f825d7c5c206d73ffd666f0f9 100644 --- a/net/minecraft/world/entity/npc/villager/Villager.java +++ b/net/minecraft/world/entity/npc/villager/Villager.java @@ -315,7 +315,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler diff --git a/purpur-server/minecraft-patches/features/0019-Cows-naturally-aggressive-to-players-chance.patch b/purpur-server/minecraft-patches/features/0019-Cows-naturally-aggressive-to-players-chance.patch index c010b48ba..afa3b58ca 100644 --- a/purpur-server/minecraft-patches/features/0019-Cows-naturally-aggressive-to-players-chance.patch +++ b/purpur-server/minecraft-patches/features/0019-Cows-naturally-aggressive-to-players-chance.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Cows naturally aggressive to players chance diff --git a/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java b/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java -index 9bc35ca825e300e82d2d108de70622f8f453bff6..2db06c40b4a1841e96d02e3d90e2c98a6f709d30 100644 +index ccdd439a89b7e7e10ee960cfe1e5e119d5367799..49292ae53f2b4554064daa4953a8cec00aa1fa98 100644 --- a/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java +++ b/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java @@ -135,7 +135,7 @@ public class DefaultAttributes { @@ -13,7 +13,7 @@ index 9bc35ca825e300e82d2d108de70622f8f453bff6..2db06c40b4a1841e96d02e3d90e2c98a .put(EntityType.MAGMA_CUBE, MagmaCube.createAttributes().build()) .put(EntityType.MANNEQUIN, LivingEntity.createLivingAttributes().build()) - .put(EntityType.MOOSHROOM, Cow.createAttributes().build()) -+ .put(EntityType.MOOSHROOM, net.minecraft.world.entity.animal.AbstractCow.createAttributes().build()) // Purpur - Cows naturally aggressive to players chance ++ .put(EntityType.MOOSHROOM, net.minecraft.world.entity.animal.cow.AbstractCow.createAttributes().build()) // Purpur - Cows naturally aggressive to players chance .put(EntityType.MULE, AbstractChestedHorse.createBaseChestedHorseAttributes().build()) .put(EntityType.NAUTILUS, Nautilus.createAttributes().build()) .put(EntityType.OCELOT, Ocelot.createAttributes().build()) diff --git a/purpur-server/minecraft-patches/sources/io/papermc/paper/entity/activation/ActivationRange.java.patch b/purpur-server/minecraft-patches/sources/io/papermc/paper/entity/activation/ActivationRange.java.patch index e0eadeef9..70f8de868 100644 --- a/purpur-server/minecraft-patches/sources/io/papermc/paper/entity/activation/ActivationRange.java.patch +++ b/purpur-server/minecraft-patches/sources/io/papermc/paper/entity/activation/ActivationRange.java.patch @@ -13,7 +13,7 @@ * @return */ public static boolean checkIfActive(final Entity entity) { -+ if (entity.level().purpurConfig.squidImmuneToEAR && entity instanceof net.minecraft.world.entity.animal.Squid) return true; // Purpur - Squid EAR immunity ++ if (entity.level().purpurConfig.squidImmuneToEAR && entity instanceof net.minecraft.world.entity.animal.squid.Squid) return true; // Purpur - Squid EAR immunity // Never safe to skip fireworks or item gravity if (entity instanceof FireworkRocketEntity || (entity instanceof ItemEntity && (entity.tickCount + entity.getId()) % 4 == 0)) { // Needed for item gravity, see ItemEntity tick return true; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch index 0e397544a..3c37f2002 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch @@ -201,7 +201,7 @@ case NONE -> Explosion.BlockInteraction.KEEP; case BLOCK -> this.getDestroyType(GameRules.BLOCK_EXPLOSION_DROP_DECAY); - case MOB -> this.getGameRules().get(GameRules.MOB_GRIEFING) -+ case MOB -> ((source instanceof net.minecraft.world.entity.projectile.hurtingprojectile.LargeFireball) ? this.getGameRules().getBoolean(GameRules.MOB_GRIEFING, this.purpurConfig.fireballsMobGriefingOverride) : this.getGameRules().get(GameRules.MOB_GRIEFING)) // Purpur - Add mobGriefing override to everything affected ++ case MOB -> ((source instanceof net.minecraft.world.entity.projectile.hurtingprojectile.LargeFireball) ? this.getGameRules().get(GameRules.MOB_GRIEFING, this.purpurConfig.fireballsMobGriefingOverride) : this.getGameRules().get(GameRules.MOB_GRIEFING)) // Purpur - Add mobGriefing override to everything affected ? this.getDestroyType(GameRules.MOB_EXPLOSION_DROP_DECAY) : Explosion.BlockInteraction.KEEP; case TNT -> this.getDestroyType(GameRules.TNT_EXPLOSION_DROP_DECAY); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch index d5334ce6d..6f0960f18 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch @@ -196,7 +196,7 @@ + public boolean isScissors(ItemStack stack) { + if (!stack.is(Items.SHEARS)) return false; + -+ ResourceLocation itemModelReference = stack.get(net.minecraft.core.component.DataComponents.ITEM_MODEL); ++ Identifier itemModelReference = stack.get(net.minecraft.core.component.DataComponents.ITEM_MODEL); + if (itemModelReference != null && itemModelReference.equals(this.player.level().purpurConfig.dontRunWithScissorsItemModelReference)) return true; + + return stack.getOrDefault(DataComponents.CUSTOM_MODEL_DATA, net.minecraft.world.item.component.CustomModelData.EMPTY).equals(net.minecraft.world.item.component.CustomModelData.EMPTY); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Ravager.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Ravager.java.patch index 53048f5a2..7173a96a0 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Ravager.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Ravager.java.patch @@ -4,7 +4,7 @@ protected void registerGoals() { super.registerGoals(); this.goalSelector.addGoal(0, new FloatGoal(this)); -+ if (level().purpurConfig.ravagerAvoidRabbits) this.goalSelector.addGoal(3, new net.minecraft.world.entity.ai.goal.AvoidEntityGoal<>(this, net.minecraft.world.entity.animal.Rabbit.class, 6.0F, 1.0D, 1.2D)); // Purpur - option to make ravagers afraid of rabbits ++ if (level().purpurConfig.ravagerAvoidRabbits) this.goalSelector.addGoal(3, new net.minecraft.world.entity.ai.goal.AvoidEntityGoal<>(this, net.minecraft.world.entity.animal.rabbit.Rabbit.class, 6.0F, 1.0D, 1.2D)); // Purpur - option to make ravagers afraid of rabbits this.goalSelector.addGoal(4, new MeleeAttackGoal(this, 1.0, true)); this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 0.4)); this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F)); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/villager/Villager.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/villager/Villager.java.patch index 5b50dccc3..c3dd42b60 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/villager/Villager.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/villager/Villager.java.patch @@ -87,7 +87,7 @@ + if (!inactive) { + this.getBrain().tick(level, this); // Paper - EAR 2 + } -+ else if (this.isLobotomized && shouldRestock()) restock(); ++ else if (this.isLobotomized && shouldRestock(level)) restock(); + // Purpur end - Lobotomize stuck villagers profilerFiller.pop(); if (this.assignProfessionWhenSpawned) { @@ -122,7 +122,7 @@ } public void spawnGolemIfNeeded(ServerLevel level, long gameTime, int minVillagerAmount) { -+ if (level.purpurConfig.villagerSpawnIronGolemRadius > 0 && level.getEntitiesOfClass(net.minecraft.world.entity.animal.IronGolem.class, getBoundingBox().inflate(level.purpurConfig.villagerSpawnIronGolemRadius)).size() > level.purpurConfig.villagerSpawnIronGolemLimit) return; // Purpur - Implement configurable search radius for villagers to spawn iron golems ++ if (level.purpurConfig.villagerSpawnIronGolemRadius > 0 && level.getEntitiesOfClass(net.minecraft.world.entity.animal.golem.IronGolem.class, getBoundingBox().inflate(level.purpurConfig.villagerSpawnIronGolemRadius)).size() > level.purpurConfig.villagerSpawnIronGolemLimit) return; // Purpur - Implement configurable search radius for villagers to spawn iron golems if (this.wantsToSpawnGolem(gameTime)) { AABB aabb = this.getBoundingBox().inflate(10.0, 10.0, 10.0); List entitiesOfClass = level.getEntitiesOfClass(Villager.class, aabb); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TurtleEggBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TurtleEggBlock.java.patch index 3b647875a..b5fa79784 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TurtleEggBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/TurtleEggBlock.java.patch @@ -18,7 +18,7 @@ + if (level.purpurConfig.turtleEggsBreakFromItems && entity instanceof net.minecraft.world.entity.item.ItemEntity) { + return true; + } -+ if (level.purpurConfig.turtleEggsBreakFromMinecarts && entity instanceof net.minecraft.world.entity.vehicle.AbstractMinecart) { ++ if (level.purpurConfig.turtleEggsBreakFromMinecarts && entity instanceof net.minecraft.world.entity.vehicle.minecart.AbstractMinecart) { + return true; + } + if (!(entity instanceof LivingEntity)) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java.patch index bc7b09181..280652166 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/storage/loot/functions/EnchantedCountIncreaseFunction.java.patch @@ -5,7 +5,7 @@ if (entity instanceof LivingEntity livingEntity) { int enchantmentLevel = EnchantmentHelper.getEnchantmentLevel(this.enchantment, livingEntity); + // Purpur start - Add an option to fix MC-3304 projectile looting -+ if (org.purpurmc.purpur.PurpurConfig.fixProjectileLootingTransfer && context.getOptionalParameter(LootContextParams.DIRECT_ATTACKING_ENTITY) instanceof net.minecraft.world.entity.projectile.AbstractArrow arrow) { ++ if (org.purpurmc.purpur.PurpurConfig.fixProjectileLootingTransfer && context.getOptionalParameter(LootContextParams.DIRECT_ATTACKING_ENTITY) instanceof net.minecraft.world.entity.projectile.arrow.AbstractArrow arrow) { + enchantmentLevel = arrow.actualEnchantments.getLevel(this.enchantment); + } + // Purpur end - Add an option to fix MC-3304 projectile looting diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch index 6df6aa3cf..c9e217b4e 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java.patch @@ -190,7 +190,7 @@ + net.minecraft.nbt.NbtIo.writeCompressed(compoundTag, tempFile.toPath()); + File playerDataFile = new File(playerDir, this.getUniqueId()+".dat"); + File playerDataFileOld = new File(playerDir, this.getUniqueId()+".dat_old"); -+ net.minecraft.Util.safeReplaceFile(playerDataFile.toPath(), tempFile.toPath(), playerDataFileOld.toPath()); ++ net.minecraft.util.Util.safeReplaceFile(playerDataFile.toPath(), tempFile.toPath(), playerDataFileOld.toPath()); + } catch (java.io.IOException e) { + e.printStackTrace(); + } 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 e5a1a5c09..24a6733d8 100644 --- a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2359,6 +2359,27 @@ public class PurpurWorldConfig { muleAlwaysDropExp = getBoolean("mobs.mule.always-drop-exp", muleAlwaysDropExp); } + // public boolean nautilusRidable = false; + // public boolean nautilusRidableInWater = true; + // public boolean nautilusControllable = true; + // public double nautilusMaxHealth = 10.0D; + // public double nautilusScale = 1.0D; + public int nautilusBreedingTicks = 6000; + // public boolean nautilusTakeDamageFromWater = false; + // public boolean nautilusAlwaysDropExp = false; + // public boolean nautilusSpawnUnderSeaLevel = false; + private void nautilusSettings() { + // nautilusRidable = getBoolean("mobs.nautilus.ridable", nautilusRidable); + // nautilusRidableInWater = getBoolean("mobs.nautilus.ridable-in-water", nautilusRidableInWater); + // nautilusControllable = getBoolean("mobs.nautilus.controllable", nautilusControllable); + // nautilusMaxHealth = getDouble("mobs.nautilus.attributes.max_health", nautilusMaxHealth); + // nautilusScale = Mth.clamp(getDouble("mobs.nautilus.attributes.scale", nautilusScale), 0.0625D, 16.0D); + nautilusBreedingTicks = getInt("mobs.nautilus.breeding-delay-ticks", nautilusBreedingTicks); + // nautilusTakeDamageFromWater = getBoolean("mobs.nautilus.takes-damage-from-water", nautilusTakeDamageFromWater); + // nautilusAlwaysDropExp = getBoolean("mobs.nautilus.always-drop-exp", nautilusAlwaysDropExp); + // nautilusSpawnUnderSeaLevel = getBoolean("mobs.nautilus.spawn-below-sea-level", nautilusSpawnUnderSeaLevel); + } + public boolean ocelotRidable = false; public boolean ocelotRidableInWater = true; public boolean ocelotControllable = true; diff --git a/purpur-server/src/main/java/org/purpurmc/purpur/command/CompassCommand.java b/purpur-server/src/main/java/org/purpurmc/purpur/command/CompassCommand.java index 79b849083..99d344d7f 100644 --- a/purpur-server/src/main/java/org/purpurmc/purpur/command/CompassCommand.java +++ b/purpur-server/src/main/java/org/purpurmc/purpur/command/CompassCommand.java @@ -4,12 +4,13 @@ import com.mojang.brigadier.CommandDispatcher; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.permissions.Permissions; import org.purpurmc.purpur.task.CompassTask; public class CompassCommand { public static void register(CommandDispatcher dispatcher) { dispatcher.register(Commands.literal("compass") - .requires(listener -> listener.hasPermission(2, "bukkit.command.compass")) + .requires(listener -> listener.hasPermission(Permissions.COMMANDS_GAMEMASTER, "bukkit.command.compass")) .executes(context -> { ServerPlayer player = context.getSource().getPlayerOrException(); CompassTask task = CompassTask.instance(); diff --git a/purpur-server/src/main/java/org/purpurmc/purpur/command/CreditsCommand.java b/purpur-server/src/main/java/org/purpurmc/purpur/command/CreditsCommand.java index 87e41ddfb..01c6be4ef 100644 --- a/purpur-server/src/main/java/org/purpurmc/purpur/command/CreditsCommand.java +++ b/purpur-server/src/main/java/org/purpurmc/purpur/command/CreditsCommand.java @@ -6,6 +6,7 @@ import net.minecraft.commands.Commands; import net.minecraft.commands.arguments.EntityArgument; import net.minecraft.network.protocol.game.ClientboundGameEventPacket; import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.permissions.Permissions; import org.purpurmc.purpur.PurpurConfig; import java.util.Collection; @@ -14,10 +15,10 @@ import java.util.Collections; public class CreditsCommand { public static void register(CommandDispatcher dispatcher) { dispatcher.register(Commands.literal("credits") - .requires((listener) -> listener.hasPermission(2, "bukkit.command.credits")) + .requires((listener) -> listener.hasPermission(Permissions.COMMANDS_GAMEMASTER, "bukkit.command.credits")) .executes((context) -> execute(context.getSource(), Collections.singleton(context.getSource().getPlayerOrException()))) .then(Commands.argument("targets", EntityArgument.players()) - .requires(listener -> listener.hasPermission(2, "bukkit.command.credits.other")) + .requires(listener -> listener.hasPermission(Permissions.COMMANDS_GAMEMASTER, "bukkit.command.credits.other")) .executes((context) -> execute(context.getSource(), EntityArgument.getPlayers(context, "targets"))) ) ); diff --git a/purpur-server/src/main/java/org/purpurmc/purpur/command/DemoCommand.java b/purpur-server/src/main/java/org/purpurmc/purpur/command/DemoCommand.java index 24e987fda..30259ea94 100644 --- a/purpur-server/src/main/java/org/purpurmc/purpur/command/DemoCommand.java +++ b/purpur-server/src/main/java/org/purpurmc/purpur/command/DemoCommand.java @@ -6,6 +6,7 @@ import net.minecraft.commands.Commands; import net.minecraft.commands.arguments.EntityArgument; import net.minecraft.network.protocol.game.ClientboundGameEventPacket; import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.permissions.Permissions; import org.purpurmc.purpur.PurpurConfig; import java.util.Collection; @@ -14,10 +15,10 @@ import java.util.Collections; public class DemoCommand { public static void register(CommandDispatcher dispatcher) { dispatcher.register(Commands.literal("demo") - .requires((listener) -> listener.hasPermission(2, "bukkit.command.demo")) + .requires((listener) -> listener.hasPermission(Permissions.COMMANDS_GAMEMASTER, "bukkit.command.demo")) .executes((context) -> execute(context.getSource(), Collections.singleton(context.getSource().getPlayerOrException()))) .then(Commands.argument("targets", EntityArgument.players()) - .requires(listener -> listener.hasPermission(2, "bukkit.command.demo.other")) + .requires(listener -> listener.hasPermission(Permissions.COMMANDS_GAMEMASTER, "bukkit.command.demo.other")) .executes((context) -> execute(context.getSource(), EntityArgument.getPlayers(context, "targets"))) ) ); diff --git a/purpur-server/src/main/java/org/purpurmc/purpur/command/PingCommand.java b/purpur-server/src/main/java/org/purpurmc/purpur/command/PingCommand.java index fc400ddcb..ae32b99e0 100644 --- a/purpur-server/src/main/java/org/purpurmc/purpur/command/PingCommand.java +++ b/purpur-server/src/main/java/org/purpurmc/purpur/command/PingCommand.java @@ -5,6 +5,7 @@ import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; import net.minecraft.commands.arguments.EntityArgument; import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.permissions.Permissions; import org.purpurmc.purpur.PurpurConfig; import java.util.Collection; @@ -13,10 +14,10 @@ import java.util.Collections; public class PingCommand { public static void register(CommandDispatcher dispatcher) { dispatcher.register(Commands.literal("ping") - .requires((listener) -> listener.hasPermission(2, "bukkit.command.ping")) + .requires((listener) -> listener.hasPermission(Permissions.COMMANDS_GAMEMASTER, "bukkit.command.ping")) .executes((context) -> execute(context.getSource(), Collections.singleton(context.getSource().getPlayerOrException()))) .then(Commands.argument("targets", EntityArgument.players()) - .requires(listener -> listener.hasPermission(2, "bukkit.command.ping.other")) + .requires(listener -> listener.hasPermission(Permissions.COMMANDS_GAMEMASTER, "bukkit.command.ping.other")) .executes((context) -> execute(context.getSource(), EntityArgument.getPlayers(context, "targets"))) ) ); diff --git a/purpur-server/src/main/java/org/purpurmc/purpur/command/RamBarCommand.java b/purpur-server/src/main/java/org/purpurmc/purpur/command/RamBarCommand.java index 3a3c706d5..78ae578aa 100644 --- a/purpur-server/src/main/java/org/purpurmc/purpur/command/RamBarCommand.java +++ b/purpur-server/src/main/java/org/purpurmc/purpur/command/RamBarCommand.java @@ -9,6 +9,7 @@ import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; import net.minecraft.commands.arguments.EntityArgument; import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.permissions.Permissions; import org.purpurmc.purpur.PurpurConfig; import org.purpurmc.purpur.task.RamBarTask; @@ -18,10 +19,10 @@ import java.util.Collections; public class RamBarCommand { public static void register(CommandDispatcher dispatcher) { dispatcher.register(Commands.literal("rambar") - .requires(listener -> listener.hasPermission(2, "bukkit.command.rambar")) + .requires(listener -> listener.hasPermission(Permissions.COMMANDS_GAMEMASTER, "bukkit.command.rambar")) .executes(context -> execute(context.getSource(), Collections.singleton(context.getSource().getPlayerOrException()))) .then(Commands.argument("targets", EntityArgument.players()) - .requires(listener -> listener.hasPermission(2, "bukkit.command.rambar.other")) + .requires(listener -> listener.hasPermission(Permissions.COMMANDS_GAMEMASTER, "bukkit.command.rambar.other")) .executes((context) -> execute(context.getSource(), EntityArgument.getPlayers(context, "targets"))) ) ); diff --git a/purpur-server/src/main/java/org/purpurmc/purpur/command/RamCommand.java b/purpur-server/src/main/java/org/purpurmc/purpur/command/RamCommand.java index 992f8dfc6..3a1d6eecf 100644 --- a/purpur-server/src/main/java/org/purpurmc/purpur/command/RamCommand.java +++ b/purpur-server/src/main/java/org/purpurmc/purpur/command/RamCommand.java @@ -6,13 +6,14 @@ import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; +import net.minecraft.server.permissions.Permissions; import org.purpurmc.purpur.PurpurConfig; import org.purpurmc.purpur.task.RamBarTask; public class RamCommand { public static void register(CommandDispatcher dispatcher) { dispatcher.register(Commands.literal("ram") - .requires(listener -> listener.hasPermission(2, "bukkit.command.ram")) + .requires(listener -> listener.hasPermission(Permissions.COMMANDS_GAMEMASTER, "bukkit.command.ram")) .executes(context -> { CommandSourceStack sender = context.getSource(); RamBarTask ramBar = RamBarTask.instance(); diff --git a/purpur-server/src/main/java/org/purpurmc/purpur/command/TPSBarCommand.java b/purpur-server/src/main/java/org/purpurmc/purpur/command/TPSBarCommand.java index 854e6b040..668b633c7 100644 --- a/purpur-server/src/main/java/org/purpurmc/purpur/command/TPSBarCommand.java +++ b/purpur-server/src/main/java/org/purpurmc/purpur/command/TPSBarCommand.java @@ -9,6 +9,7 @@ import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; import net.minecraft.commands.arguments.EntityArgument; import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.permissions.Permissions; import org.purpurmc.purpur.PurpurConfig; import org.purpurmc.purpur.task.TPSBarTask; @@ -18,10 +19,10 @@ import java.util.Collections; public class TPSBarCommand { public static void register(CommandDispatcher dispatcher) { dispatcher.register(Commands.literal("tpsbar") - .requires(listener -> listener.hasPermission(2, "bukkit.command.tpsbar")) + .requires(listener -> listener.hasPermission(Permissions.COMMANDS_GAMEMASTER, "bukkit.command.tpsbar")) .executes(context -> execute(context.getSource(), Collections.singleton(context.getSource().getPlayerOrException()))) .then(Commands.argument("targets", EntityArgument.players()) - .requires(listener -> listener.hasPermission(2, "bukkit.command.tpsbar.other")) + .requires(listener -> listener.hasPermission(Permissions.COMMANDS_GAMEMASTER, "bukkit.command.tpsbar.other")) .executes((context) -> execute(context.getSource(), EntityArgument.getPlayers(context, "targets"))) ) ); diff --git a/purpur-server/src/main/java/org/purpurmc/purpur/command/UptimeCommand.java b/purpur-server/src/main/java/org/purpurmc/purpur/command/UptimeCommand.java index 4bb475099..fb0ca957f 100644 --- a/purpur-server/src/main/java/org/purpurmc/purpur/command/UptimeCommand.java +++ b/purpur-server/src/main/java/org/purpurmc/purpur/command/UptimeCommand.java @@ -7,6 +7,7 @@ import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; import net.minecraft.server.MinecraftServer; +import net.minecraft.server.permissions.Permissions; import org.purpurmc.purpur.PurpurConfig; import java.util.concurrent.TimeUnit; @@ -15,7 +16,7 @@ import java.util.function.Function; public class UptimeCommand { public static void register(CommandDispatcher dispatcher) { dispatcher.register(Commands.literal("uptime") - .requires((listener) -> listener.hasPermission(2, "bukkit.command.uptime")) + .requires((listener) -> listener.hasPermission(Permissions.COMMANDS_GAMEMASTER, "bukkit.command.uptime")) .executes((context) -> execute(context.getSource())) ); }