Add option to disable scissor damage in liquid (#1295)

Co-authored-by: granny <granny@purpurmc.org>
This commit is contained in:
JustDoom
2023-03-22 16:15:48 +10:00
committed by GitHub
parent be8f6be0b4
commit 20115a4b2e
98 changed files with 436 additions and 432 deletions

View File

@@ -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..fb4852272753747ba925962e51cff848fd1af9e3 100644
index e28bc6ad060b487b2223379e0187c082c0e69f7f..2bfa3ee8fba634c33545b68dbd5d49fa1984ed55 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
@@ -13,7 +13,7 @@ index e28bc6ad060b487b2223379e0187c082c0e69f7f..fb4852272753747ba925962e51cff848
}
+ // 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) {
+ if (this.player.level.purpurConfig.dontRunWithScissors && this.player.isSprinting() && !(this.player.level.purpurConfig.ignoreScissorsInWater && this.player.isInWater()) && !(this.player.level.purpurConfig.ignoreScissorsInLava && this.player.isInLava()) && (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().magic(), (float) this.player.level.purpurConfig.scissorsRunningDamage);
+ if (!org.purpurmc.purpur.PurpurConfig.dontRunWithScissors.isBlank()) this.player.sendActionBarMessage(org.purpurmc.purpur.PurpurConfig.dontRunWithScissors);
+ }
@@ -61,23 +61,27 @@ 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 d7a87f582ba3f9f1af1605313208212011c53c58..8d0e2bb1f4e58339768cb1dad878142e33ad84bd 100644
index 91aefbfb74acb1eb94751507cee98e7291fd2b82..5161f70dbb5eda657b0738065777bd158b5ed633 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 {
@@ -199,6 +199,10 @@ public class PurpurWorldConfig {
public List<Item> itemImmuneToExplosion = new ArrayList<>();
public List<Item> itemImmuneToFire = new ArrayList<>();
public List<Item> itemImmuneToLightning = new ArrayList<>();
+ public boolean dontRunWithScissors = false;
+ public boolean ignoreScissorsInWater = false;
+ public boolean ignoreScissorsInLava = false;
+ public double scissorsRunningDamage = 1D;
private void itemSettings() {
itemImmuneToCactus.clear();
getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> {
@@ -236,6 +238,8 @@ public class PurpurWorldConfig {
@@ -236,6 +240,10 @@ public class PurpurWorldConfig {
Item item = BuiltInRegistries.ITEM.get(new ResourceLocation(key.toString()));
if (item != Items.AIR) itemImmuneToLightning.add(item);
});
+ dontRunWithScissors = getBoolean("gameplay-mechanics.item.shears.damage-if-sprinting", dontRunWithScissors);
+ ignoreScissorsInWater = getBoolean("gameplay-mechanics.item.shears.ignore-in-water", ignoreScissorsInWater);
+ ignoreScissorsInLava = getBoolean("gameplay-mechanics.item.shears.ignore-in-lava", ignoreScissorsInLava);
+ scissorsRunningDamage = getDouble("gameplay-mechanics.item.shears.sprinting-damage", scissorsRunningDamage);
}