Implement death messages for stonecutter and running with scissors

This commit is contained in:
BillyGalbreath
2021-12-31 08:54:29 -06:00
parent 2d51101945
commit 2e4174e033
21 changed files with 166 additions and 59 deletions

View File

@@ -4,6 +4,25 @@ Date: Mon, 5 Oct 2020 12:15:14 -0500
Subject: [PATCH] Stonecutter damage
diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSource.java b/src/main/java/net/minecraft/world/damagesource/DamageSource.java
index 19d6165f266fcc39bc3533042109ef1b725ecb77..32bf8264fecb8873f3ffa0e57a4bb48b5517fb77 100644
--- a/src/main/java/net/minecraft/world/damagesource/DamageSource.java
+++ b/src/main/java/net/minecraft/world/damagesource/DamageSource.java
@@ -39,6 +39,14 @@ public class DamageSource {
public static final DamageSource FREEZE = (new DamageSource("freeze")).bypassArmor();
public static final DamageSource FALLING_STALACTITE = (new DamageSource("fallingStalactite")).damageHelmet();
public static final DamageSource STALAGMITE = (new DamageSource("stalagmite")).bypassArmor().setIsFall();
+ // Purpur start
+ public static final DamageSource STONECUTTER = (new DamageSource("stonecutter") {
+ @Override
+ public Component getLocalizedDeathMessage(LivingEntity entity) {
+ return getLocalizedDeathMessage(org.purpurmc.purpur.PurpurConfig.deathMsgStonecutter, entity);
+ }
+ }).bypassArmor();
+ // Purpur end
private boolean damageHelmet;
private boolean bypassArmor;
private boolean bypassInvul;
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 0198b89d3ac768c826d5be22cde88004f3444d48..cd25a1e6671276ecb465a60ee969122fa5648ded 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
@@ -18,7 +37,7 @@ index 0198b89d3ac768c826d5be22cde88004f3444d48..cd25a1e6671276ecb465a60ee969122f
}
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 ec1c04f354236af24e137865b3b311ab8eb29ac4..46ef683e027f95bf39a42e0abba3a8e4dcd66740 100644
index ec1c04f354236af24e137865b3b311ab8eb29ac4..7d3e7c5f8f9946c35384cf18a43efbcf62952228 100644
--- a/src/main/java/net/minecraft/world/level/block/StonecutterBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/StonecutterBlock.java
@@ -93,4 +93,16 @@ public class StonecutterBlock extends Block {
@@ -31,7 +50,7 @@ index ec1c04f354236af24e137865b3b311ab8eb29ac4..46ef683e027f95bf39a42e0abba3a8e4
+ 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(net.minecraft.world.damagesource.DamageSource.CACTUS, level.purpurConfig.stonecutterDamage);
+ entity.hurt(net.minecraft.world.damagesource.DamageSource.STONECUTTER, level.purpurConfig.stonecutterDamage);
+ org.bukkit.craftbukkit.event.CraftEventFactory.blockDamage = null;
+ }
+ super.stepOn(level, pos, state, entity);
@@ -60,6 +79,37 @@ index 737d0405a195d322ffe9a57acadb9f6d645c03b8..d7bdf3c2a5b99ff7adb3e960ff356a1f
return BlockPathTypes.DAMAGE_OTHER;
} else if (blockState.is(Blocks.HONEY_BLOCK)) {
return BlockPathTypes.STICKY_HONEY;
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index 7be3a8ead9fc634ce990b689ac2cd2ae805030ea..159924aefae87f69492ecc0c93a638758f6632a5 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -1033,6 +1033,10 @@ public class CraftEventFactory {
cause = DamageCause.MAGIC;
} else if (source == DamageSource.IN_FIRE) {
cause = DamageCause.FIRE;
+ // Purpur start
+ } else if (source == DamageSource.STONECUTTER) {
+ cause = DamageCause.CONTACT;
+ // Purpur end
} else {
throw new IllegalStateException(String.format("Unhandled damage of %s by %s from %s", entity, damager, source.msgId));
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index f0051835d259ecfd0300653645c3942749a31937..161dc422a331d02132d5158efeef8ac2150a4d0f 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
@@ -176,6 +176,11 @@ public class PurpurConfig {
pingCommandOutput = getString("settings.messages.ping-command-output", pingCommandOutput);
}
+ public static String deathMsgStonecutter = "<player> has sawed themself in half";
+ private static void deathMessages() {
+ deathMsgStonecutter = getString("settings.messages.death-message.stonecutter", deathMsgStonecutter);
+ }
+
public static String serverModName = "Purpur";
private static void serverModName() {
serverModName = getString("settings.server-mod-name", serverModName);
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index d10a5465fada1a1e7eb0dc0769a974da2a40746a..b26c67a506959757e1cb586bbdd4b0efd09e6382 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java