diff --git a/patches/server/0173-Dont-run-with-scissors.patch b/patches/server/0173-Dont-run-with-scissors.patch new file mode 100644 index 000000000..c9f44716b --- /dev/null +++ b/patches/server/0173-Dont-run-with-scissors.patch @@ -0,0 +1,45 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: JustDoom +Date: Fri, 5 Mar 2021 14:23:16 -0500 +Subject: [PATCH] Dont run with scissors! + + +diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java +index 9f93e2f5aed24ad0c13076fc6b2087d988bd0f01..89af9bca9df7a25362650627ce9fa0aa02b3cc29 100644 +--- a/src/main/java/net/minecraft/server/PlayerConnection.java ++++ b/src/main/java/net/minecraft/server/PlayerConnection.java +@@ -1388,6 +1388,12 @@ public class PlayerConnection implements PacketListenerPlayIn { + this.player.fallDistance = 0.0F; + } + ++ // Purpur Start ++ if (this.player.isSprinting() && this.player.getWorldServer().purpurConfig.dontRunWithScissors && (this.player.getItemInHand(EnumHand.MAIN_HAND).getItem() == Items.SHEARS || this.player.getItemInHand(EnumHand.OFF_HAND).getItem() == Items.SHEARS) && (int) (Math.random() * 10) == 0) { ++ this.player.damageEntity(net.minecraft.server.DamageSource.MAGIC, (float) this.player.getWorldServer().purpurConfig.scissorsRunningDamage); ++ } ++ // Purpur End ++ + this.player.checkMovement(this.player.locX() - d0, this.player.locY() - d1, this.player.locZ() - d2); + this.o = this.player.locX(); + this.p = this.player.locY(); +diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +index 958b0ee8af21e4176e9d35af88294919c509a2c1..5f14c6c0e62ce5bece342b850e201357314061b2 100644 +--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java ++++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +@@ -168,6 +168,8 @@ public class PurpurWorldConfig { + public List itemImmuneToCactus = new ArrayList<>(); + public List itemImmuneToExplosion = new ArrayList<>(); + public List itemImmuneToFire = new ArrayList<>(); ++ public boolean dontRunWithScissors = false; ++ public double scissorsRunningDamage = 1D; + private void itemSettings() { + itemImmuneToCactus.clear(); + getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { +@@ -196,6 +198,8 @@ public class PurpurWorldConfig { + Item item = IRegistry.ITEM.get(new MinecraftKey(key.toString())); + if (item != Items.AIR) itemImmuneToFire.add(item); + }); ++ dontRunWithScissors = getBoolean("gameplay-mechanics.item.shears.damage-if-sprinting", dontRunWithScissors); ++ scissorsRunningDamage = getDouble("gameplay-mechanics.item.shears.sprinting-damage", scissorsRunningDamage); + } + + public boolean idleTimeoutKick = true;