diff --git a/patches/server/0134-Dont-run-with-scissors.patch b/patches/server/0134-Dont-run-with-scissors.patch index 2725addde..5442742c9 100644 --- a/patches/server/0134-Dont-run-with-scissors.patch +++ b/patches/server/0134-Dont-run-with-scissors.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Dont run with scissors! diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index e28bc6ad060b487b2223379e0187c082c0e69f7f..2b8d8dafc0df272ad095130021795cfa7716ef46 100644 +index e28bc6ad060b487b2223379e0187c082c0e69f7f..fb4852272753747ba925962e51cff848fd1af9e3 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -1686,6 +1686,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic @@ -14,7 +14,7 @@ index e28bc6ad060b487b2223379e0187c082c0e69f7f..2b8d8dafc0df272ad095130021795cfa + // Purpur Start + if (this.player.level.purpurConfig.dontRunWithScissors && this.player.isSprinting() && (isScissor(this.player.getItemInHand(InteractionHand.MAIN_HAND)) || isScissor(this.player.getItemInHand(InteractionHand.OFF_HAND))) && (int) (Math.random() * 10) == 0) { -+ this.player.hurt(this.player.damageSources().scissors(), (float) this.player.level.purpurConfig.scissorsRunningDamage); ++ this.player.hurt(this.player.damageSources().magic(), (float) this.player.level.purpurConfig.scissorsRunningDamage); + if (!org.purpurmc.purpur.PurpurConfig.dontRunWithScissors.isBlank()) this.player.sendActionBarMessage(org.purpurmc.purpur.PurpurConfig.dontRunWithScissors); + } + // Purpur End @@ -35,72 +35,6 @@ index e28bc6ad060b487b2223379e0187c082c0e69f7f..2b8d8dafc0df272ad095130021795cfa private boolean isPlayerCollidingWithAnythingNew(LevelReader world, AABB box) { Iterable iterable = world.getCollisions(this.player, this.player.getBoundingBox().deflate(9.999999747378752E-6D)); VoxelShape voxelshape = Shapes.create(box.deflate(9.999999747378752E-6D)); -diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSources.java b/src/main/java/net/minecraft/world/damagesource/DamageSources.java -index d3d9bb2cdcaa3d671370ee3014341fe741275743..dc8d1a5edd415724b1b5417a1bb3cca13c47d28f 100644 ---- a/src/main/java/net/minecraft/world/damagesource/DamageSources.java -+++ b/src/main/java/net/minecraft/world/damagesource/DamageSources.java -@@ -39,6 +39,7 @@ public class DamageSources { - private final DamageSource sweetBerryBush; - private final DamageSource freeze; - private final DamageSource stalagmite; -+ private final DamageSource scissors; - // CraftBukkit start - public final DamageSource melting; - public final DamageSource poison; -@@ -69,6 +70,7 @@ public class DamageSources { - this.sweetBerryBush = this.source(DamageTypes.SWEET_BERRY_BUSH); - this.freeze = this.source(DamageTypes.FREEZE); - this.stalagmite = this.source(DamageTypes.STALAGMITE); -+ this.scissors = this.source(DamageTypes.SCISSORS); - } - - private DamageSource source(ResourceKey key) { -@@ -167,6 +169,10 @@ public class DamageSources { - return this.stalagmite; - } - -+ public DamageSource scissors() { -+ return this.scissors; -+ } -+ - public DamageSource fallingBlock(Entity attacker) { - return this.source(DamageTypes.FALLING_BLOCK, attacker); - } -diff --git a/src/main/java/net/minecraft/world/damagesource/DamageTypes.java b/src/main/java/net/minecraft/world/damagesource/DamageTypes.java -index 0b80bf3e30a83c8c284d196980340542bfca3ded..7bbfa2f8ac29dd32b100d356b285b5e5bd6615fe 100644 ---- a/src/main/java/net/minecraft/world/damagesource/DamageTypes.java -+++ b/src/main/java/net/minecraft/world/damagesource/DamageTypes.java -@@ -27,6 +27,7 @@ public interface DamageTypes { - ResourceKey SWEET_BERRY_BUSH = ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation("sweet_berry_bush")); - ResourceKey FREEZE = ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation("freeze")); - ResourceKey STALAGMITE = ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation("stalagmite")); -+ ResourceKey SCISSORS = ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation("scissors")); - ResourceKey FALLING_BLOCK = ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation("falling_block")); - ResourceKey FALLING_ANVIL = ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation("falling_anvil")); - ResourceKey FALLING_STALACTITE = ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation("falling_stalactite")); -@@ -71,6 +72,7 @@ public interface DamageTypes { - damageTypeRegisterable.register(SWEET_BERRY_BUSH, new DamageType("sweetBerryBush", 0.1F, DamageEffects.POKING)); - damageTypeRegisterable.register(FREEZE, new DamageType("freeze", 0.0F, DamageEffects.FREEZING)); - damageTypeRegisterable.register(STALAGMITE, new DamageType("stalagmite", 0.0F)); -+ damageTypeRegisterable.register(SCISSORS, new DamageType("scissors", DamageScaling.NEVER, 0.0F, DamageEffects.HURT, DeathMessageType.INTENTIONAL_GAME_DESIGN)); - damageTypeRegisterable.register(FALLING_BLOCK, new DamageType("fallingBlock", 0.1F)); - damageTypeRegisterable.register(FALLING_ANVIL, new DamageType("anvil", 0.1F)); - damageTypeRegisterable.register(FALLING_STALACTITE, new DamageType("fallingStalactite", 0.1F)); -diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index fb1555641047175060f381bf797c4a6fce75837a..debba52be7ba896f5a96a2ffa4e502101627a576 100644 ---- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -1131,6 +1131,10 @@ public class CraftEventFactory { - cause = DamageCause.DRYOUT; - } else if (sourceType == DamageTypes.FREEZE) { - cause = DamageCause.FREEZE; -+ // Purpur start -+ } else if (sourceType == DamageTypes.SCISSORS) { -+ cause = DamageCause.SUICIDE; -+ // Purpur end - } else { - cause = DamageCause.CUSTOM; - } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java index 5b0625955e2a65f689c8a128d73170bc1f0c8025..c8097ec7887ac8e689b6843d9ff7744d6a453478 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -127,7 +61,7 @@ index 5b0625955e2a65f689c8a128d73170bc1f0c8025..c8097ec7887ac8e689b6843d9ff7744d public static String serverModName = "Purpur"; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d4c78ebd34109b8364e51089ed383ee06f18e48a..0eef3049df089ec17c213e4a4ab4c23815775dc4 100644 +index d7a87f582ba3f9f1af1605313208212011c53c58..8d0e2bb1f4e58339768cb1dad878142e33ad84bd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -199,6 +199,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0259-Stonecutter-damage.patch b/patches/server/0259-Stonecutter-damage.patch index 50ab1ac42..855d01736 100644 --- a/patches/server/0259-Stonecutter-damage.patch +++ b/patches/server/0259-Stonecutter-damage.patch @@ -4,59 +4,8 @@ Date: Wed, 8 Jun 2022 14:19:35 -0400 Subject: [PATCH] Stonecutter damage -diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSources.java b/src/main/java/net/minecraft/world/damagesource/DamageSources.java -index dc8d1a5edd415724b1b5417a1bb3cca13c47d28f..c30e9bd1bccfe008df354678db7816ba450a4b24 100644 ---- a/src/main/java/net/minecraft/world/damagesource/DamageSources.java -+++ b/src/main/java/net/minecraft/world/damagesource/DamageSources.java -@@ -40,6 +40,7 @@ public class DamageSources { - private final DamageSource freeze; - private final DamageSource stalagmite; - private final DamageSource scissors; -+ private final DamageSource stonecutter; // Purpur - // CraftBukkit start - public final DamageSource melting; - public final DamageSource poison; -@@ -71,6 +72,7 @@ public class DamageSources { - this.freeze = this.source(DamageTypes.FREEZE); - this.stalagmite = this.source(DamageTypes.STALAGMITE); - this.scissors = this.source(DamageTypes.SCISSORS); -+ this.stonecutter = this.source(DamageTypes.STONE_CUTTER); - } - - private DamageSource source(ResourceKey key) { -@@ -173,6 +175,10 @@ public class DamageSources { - return this.scissors; - } - -+ public DamageSource stonecutter() { -+ return this.stonecutter; -+ } -+ - public DamageSource fallingBlock(Entity attacker) { - return this.source(DamageTypes.FALLING_BLOCK, attacker); - } -diff --git a/src/main/java/net/minecraft/world/damagesource/DamageTypes.java b/src/main/java/net/minecraft/world/damagesource/DamageTypes.java -index 7bbfa2f8ac29dd32b100d356b285b5e5bd6615fe..ebe9dd5533710cc9f74801c13c71f8a1c5804c94 100644 ---- a/src/main/java/net/minecraft/world/damagesource/DamageTypes.java -+++ b/src/main/java/net/minecraft/world/damagesource/DamageTypes.java -@@ -28,6 +28,7 @@ public interface DamageTypes { - ResourceKey FREEZE = ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation("freeze")); - ResourceKey STALAGMITE = ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation("stalagmite")); - ResourceKey SCISSORS = ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation("scissors")); -+ ResourceKey STONE_CUTTER = ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation("stone_cutter")); - ResourceKey FALLING_BLOCK = ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation("falling_block")); - ResourceKey FALLING_ANVIL = ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation("falling_anvil")); - ResourceKey FALLING_STALACTITE = ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation("falling_stalactite")); -@@ -73,6 +74,7 @@ public interface DamageTypes { - damageTypeRegisterable.register(FREEZE, new DamageType("freeze", 0.0F, DamageEffects.FREEZING)); - damageTypeRegisterable.register(STALAGMITE, new DamageType("stalagmite", 0.0F)); - damageTypeRegisterable.register(SCISSORS, new DamageType("scissors", DamageScaling.NEVER, 0.0F, DamageEffects.HURT, DeathMessageType.INTENTIONAL_GAME_DESIGN)); -+ damageTypeRegisterable.register(STONE_CUTTER, new DamageType("stone_cutter", DamageScaling.NEVER, 0.0F, DamageEffects.HURT, DeathMessageType.INTENTIONAL_GAME_DESIGN)); - damageTypeRegisterable.register(FALLING_BLOCK, new DamageType("fallingBlock", 0.1F)); - damageTypeRegisterable.register(FALLING_ANVIL, new DamageType("anvil", 0.1F)); - damageTypeRegisterable.register(FALLING_STALACTITE, new DamageType("fallingStalactite", 0.1F)); diff --git a/src/main/java/net/minecraft/world/level/block/StonecutterBlock.java b/src/main/java/net/minecraft/world/level/block/StonecutterBlock.java -index 0a95842c53a9d0286c57bcb42db97e468e30fb7d..0882e67c5cf876e0fc58a4ca4accb4be40418983 100644 +index 0a95842c53a9d0286c57bcb42db97e468e30fb7d..e2d42e7947a237dd060ec1b9b63ac6ca4f37241a 100644 --- a/src/main/java/net/minecraft/world/level/block/StonecutterBlock.java +++ b/src/main/java/net/minecraft/world/level/block/StonecutterBlock.java @@ -92,4 +92,16 @@ public class StonecutterBlock extends Block { @@ -69,7 +18,7 @@ index 0a95842c53a9d0286c57bcb42db97e468e30fb7d..0882e67c5cf876e0fc58a4ca4accb4be + public void stepOn(Level level, BlockPos pos, BlockState state, net.minecraft.world.entity.Entity entity) { + if (level.purpurConfig.stonecutterDamage > 0.0F && entity instanceof net.minecraft.world.entity.LivingEntity) { + org.bukkit.craftbukkit.event.CraftEventFactory.blockDamage = level.getWorld().getBlockAt(pos.getX(), pos.getY(), pos.getZ()); -+ entity.hurt(entity.damageSources().stonecutter(), level.purpurConfig.stonecutterDamage); ++ entity.hurt(entity.damageSources().magic(), level.purpurConfig.stonecutterDamage); + org.bukkit.craftbukkit.event.CraftEventFactory.blockDamage = null; + } + super.stepOn(level, pos, state, entity); @@ -98,21 +47,6 @@ index 17a7fab20b4174273354fdc2fc700b7f2d669a98..a7578e112e80ed2585a7eb4fff9542f6 if (blockState.is(Blocks.HONEY_BLOCK)) { return BlockPathTypes.STICKY_HONEY; } else if (blockState.is(Blocks.COCOA)) { -diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index debba52be7ba896f5a96a2ffa4e502101627a576..a20866374badffdda0ea10f83fb74347240fee19 100644 ---- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -1057,6 +1057,10 @@ public class CraftEventFactory { - cause = DamageCause.MAGIC; - } else if (sourceType == DamageTypes.IN_FIRE) { - cause = DamageCause.FIRE; -+ // Purpur start -+ } else if (sourceType == DamageTypes.STONE_CUTTER) { -+ cause = DamageCause.CONTACT; -+ // Purpur end - } else { - throw new IllegalStateException(String.format("Unhandled damage of %s by %s from %s", entity, damager, source.getMsgId())); - } diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java index 636c032127c2026509764745f805ae0693e4a983..3734f6279005872eac6697e6e22c3a2e61eabc22 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java