@@ -5,47 +5,83 @@ Subject: [PATCH] Stonecutter damage
55
66
77diff --git a/src/main/java/net/minecraft/world/damagesource/CombatTracker.java b/src/main/java/net/minecraft/world/damagesource/CombatTracker.java
8- index 9e3608650c44ef5fa724c3aea86603d7bd02429c..8c2c515f1b5f56bf1d6cf0c35d4f0fa7b593d1a0 100644
8+ index 5c9d49b40a940df724101bef339a9ac5a31fd025..8ed6b8ddc76bda3d4f298b3076dba9275cec93d9 100644
99--- a/src/main/java/net/minecraft/world/damagesource/CombatTracker.java
1010+++ b/src/main/java/net/minecraft/world/damagesource/CombatTracker.java
1111@@ -102,6 +102,8 @@ public class CombatTracker {
1212 // Purpur start
13- if (damageSource.isScissors) {
13+ if (damageSource.isScissors() ) {
1414 return damageSource.getLocalizedDeathMessage(org.purpurmc.purpur.PurpurConfig.deathMsgRunWithScissors, this.mob);
15- + } else if (damageSource.isStoneCutter ) {
15+ + } else if (damageSource.isStonecutter() ) {
1616+ return damageSource.getLocalizedDeathMessage(org.purpurmc.purpur.PurpurConfig.deathMsgStonecutter, this.mob);
1717 }
1818 // Purpur end
1919 return damageSource.getLocalizedDeathMessage(this.mob);
2020diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSource.java b/src/main/java/net/minecraft/world/damagesource/DamageSource.java
21- index 727a598f1c265ae524c3746c7b7c7d2d0774d530..478173fe8e61730a2210e886a4c8dc2a6e018e90 100644
21+ index 2e443b02108b63fbaea2754b989e241494510363..09aa1677ad67701d592c18078eee5bd0317ba7c4 100644
2222--- a/src/main/java/net/minecraft/world/damagesource/DamageSource.java
2323+++ b/src/main/java/net/minecraft/world/damagesource/DamageSource.java
24- @@ -99,6 +99,8 @@ public class DamageSource {
24+ @@ -28,6 +28,7 @@ public class DamageSource {
25+ private boolean melting = false;
26+ private boolean poison = false;
27+ private boolean scissors = false; // Purpur
28+ + private boolean stonecutter = false; // Purpur
29+ private Entity customCausingEntity = null; // This field is a helper for when causing entity damage is not set by vanilla
2530
26- public boolean isScissors; // Purpur
27-
28- + public boolean isStoneCutter; // Purpur
31+ public DamageSource sweep() {
32+ @@ -66,6 +67,15 @@ public class DamageSource {
33+ public boolean isScissors() {
34+ return this.scissors;
35+ }
36+ +
37+ + public DamageSource stonecutter() {
38+ + this.stonecutter = true;
39+ + return this;
40+ + }
2941+
30- public String toString() {
31- return "DamageSource (" + this.type().msgId() + ")";
42+ + public boolean isStonecutter() {
43+ + return this.stonecutter;
44+ + }
45+ // Purpur end
46+
47+ public Entity getCausingEntity() {
48+ @@ -106,6 +116,7 @@ public class DamageSource {
49+ damageSource.poison = this.isPoison();
50+ damageSource.melting = this.isMelting();
51+ damageSource.scissors = this.isScissors(); // Purpur
52+ + damageSource.stonecutter = this.isStonecutter(); // Purpur
53+ return damageSource;
3254 }
55+ // CraftBukkit end
3356diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSources.java b/src/main/java/net/minecraft/world/damagesource/DamageSources.java
34- index 28b57ed7e862eecc04dfb2eac0093385b64460e7..0f7d3e8573462c6fde8e5e2c1e86ad8406b9f549 100644
57+ index 23c7f22dacc570837120c28e0a57f8c9155e92fc..2c1fdc031bcfc8f39692312e9ce9c5a3cf987349 100644
3558--- a/src/main/java/net/minecraft/world/damagesource/DamageSources.java
3659+++ b/src/main/java/net/minecraft/world/damagesource/DamageSources.java
37- @@ -283,5 +283,11 @@ public class DamageSources {
38- source.isScissors = true;
39- return source;
60+ @@ -45,12 +45,14 @@ public class DamageSources {
61+ private final DamageSource melting;
62+ private final DamageSource poison;
63+ private final DamageSource scissors; // Purpur
64+ + private final DamageSource stonecutter; // Purpur
65+
66+ public DamageSources(RegistryAccess registryManager) {
67+ this.damageTypes = registryManager.registryOrThrow(Registries.DAMAGE_TYPE);
68+ this.melting = this.source(DamageTypes.ON_FIRE).melting();
69+ this.poison = this.source(DamageTypes.MAGIC).poison();
70+ this.scissors = this.source(DamageTypes.MAGIC).scissors(); // Purpur
71+ + this.stonecutter = this.source(DamageTypes.MAGIC).stonecutter(); // Purpur
72+ // CraftBukkit end
73+ this.inFire = this.source(DamageTypes.IN_FIRE);
74+ this.lightningBolt = this.source(DamageTypes.LIGHTNING_BOLT);
75+ @@ -103,6 +105,9 @@ public class DamageSources {
76+ public DamageSource scissors() {
77+ return this.scissors;
4078 }
41- +
4279+ public DamageSource stonecutter() {
43- + DamageSource source = new DamageSource(this.damageTypes.getHolderOrThrow(DamageTypes.MAGIC));
44- + source.isStoneCutter = true;
45- + return source;
80+ + return this.stonecutter;
4681+ }
4782 // Purpur end
48- }
83+
84+ public DamageSource inFire() {
4985diff --git a/src/main/java/net/minecraft/world/level/block/StonecutterBlock.java b/src/main/java/net/minecraft/world/level/block/StonecutterBlock.java
5086index 77ae7b8ab24935d046cce1f8f7f476310876f9df..579abfbe791052507b15c14d8c81e39b2fdd6520 100644
5187--- a/src/main/java/net/minecraft/world/level/block/StonecutterBlock.java
@@ -87,6 +123,19 @@ index 0dc05919dfbbf73230505fcdc25d949b1602801c..996bd26e95e766ce4ca7e61d060881fe
87123 if (blockState.is(Blocks.HONEY_BLOCK)) {
88124 return BlockPathTypes.STICKY_HONEY;
89125 } else if (blockState.is(Blocks.COCOA)) {
126+ diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
127+ index aa89fcab22c7ad0c9425f5ae65cc2c6b150579cc..069ea4dc556d179d166e1dba3527c9def7129e65 100644
128+ --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
129+ +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
130+ @@ -1133,7 +1133,7 @@ public class CraftEventFactory {
131+ return CraftEventFactory.callEntityDamageEvent(source.getDirectBlock(), entity, DamageCause.LAVA, bukkitDamageSource, modifiers, modifierFunctions, cancelled);
132+ } else if (source.getDirectBlock() != null) {
133+ DamageCause cause;
134+ - if (source.is(DamageTypes.CACTUS) || source.is(DamageTypes.SWEET_BERRY_BUSH) || source.is(DamageTypes.STALAGMITE) || source.is(DamageTypes.FALLING_STALACTITE) || source.is(DamageTypes.FALLING_ANVIL)) {
135+ + if (source.is(DamageTypes.CACTUS) || source.is(DamageTypes.SWEET_BERRY_BUSH) || source.is(DamageTypes.STALAGMITE) || source.is(DamageTypes.FALLING_STALACTITE) || source.is(DamageTypes.FALLING_ANVIL) || source.isStonecutter()) { // Purpur
136+ cause = DamageCause.CONTACT;
137+ } else if (source.is(DamageTypes.HOT_FLOOR)) {
138+ cause = DamageCause.HOT_FLOOR;
90139diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
91140index c6628a28387023b334dd99a4e469126a2108c38b..3a49455509a26063a62e39fb3d3ad81e80bced54 100644
92141--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
0 commit comments