mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-17 16:37:43 +01:00
clean up damage type code for stonecutter and scissor patches
This commit is contained in:
20
patches/api/0052-Stonecutter-damage.patch
Normal file
20
patches/api/0052-Stonecutter-damage.patch
Normal file
@@ -0,0 +1,20 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: granny <contact@granny.dev>
|
||||
Date: Sun, 11 Feb 2024 23:07:47 -0800
|
||||
Subject: [PATCH] Stonecutter damage
|
||||
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/event/entity/EntityDamageEvent.java b/src/main/java/org/bukkit/event/entity/EntityDamageEvent.java
|
||||
index 3b20000d9ac3e29fe3bc5093e6635377bee88dbd..fae6f2c125eb6db88f3e8741b77f17b6817d62a9 100644
|
||||
--- a/src/main/java/org/bukkit/event/entity/EntityDamageEvent.java
|
||||
+++ b/src/main/java/org/bukkit/event/entity/EntityDamageEvent.java
|
||||
@@ -292,7 +292,8 @@ public class EntityDamageEvent extends EntityEvent implements Cancellable {
|
||||
WORLD_BORDER,
|
||||
/**
|
||||
* Damage caused when an entity contacts a block such as a Cactus,
|
||||
- * Dripstone (Stalagmite) or Berry Bush.
|
||||
+ * Dripstone (Stalagmite) or Berry Bush. (Stonecutters too if you
|
||||
+ * have the Stonecutter damage Purpur feature enabled)
|
||||
* <p>
|
||||
* Damage: variable
|
||||
*/
|
||||
@@ -37,7 +37,7 @@ index 32f33eb8b99ad4655cf021b7cf16eb15fe96ba59..4220c1b4e44ecf67653fe5a50a209866
|
||||
AABB axisalignedbb1 = this.player.getBoundingBox().move(newX - this.player.getX(), newY - this.player.getY(), newZ - this.player.getZ());
|
||||
Iterable<VoxelShape> iterable = world.getCollisions(this.player, axisalignedbb1.deflate(9.999999747378752E-6D));
|
||||
diff --git a/src/main/java/net/minecraft/world/damagesource/CombatTracker.java b/src/main/java/net/minecraft/world/damagesource/CombatTracker.java
|
||||
index 9c99b2e365aacb8309f29acb9025faccd2c676b3..9e3608650c44ef5fa724c3aea86603d7bd02429c 100644
|
||||
index 9c99b2e365aacb8309f29acb9025faccd2c676b3..5c9d49b40a940df724101bef339a9ac5a31fd025 100644
|
||||
--- a/src/main/java/net/minecraft/world/damagesource/CombatTracker.java
|
||||
+++ b/src/main/java/net/minecraft/world/damagesource/CombatTracker.java
|
||||
@@ -99,6 +99,11 @@ public class CombatTracker {
|
||||
@@ -45,7 +45,7 @@ index 9c99b2e365aacb8309f29acb9025faccd2c676b3..9e3608650c44ef5fa724c3aea86603d7
|
||||
return Component.translatable(string + ".message", this.mob.getDisplayName(), component);
|
||||
} else {
|
||||
+ // Purpur start
|
||||
+ if (damageSource.isScissors) {
|
||||
+ if (damageSource.isScissors()) {
|
||||
+ return damageSource.getLocalizedDeathMessage(org.purpurmc.purpur.PurpurConfig.deathMsgRunWithScissors, this.mob);
|
||||
+ }
|
||||
+ // Purpur end
|
||||
@@ -53,34 +53,74 @@ index 9c99b2e365aacb8309f29acb9025faccd2c676b3..9e3608650c44ef5fa724c3aea86603d7
|
||||
}
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSource.java b/src/main/java/net/minecraft/world/damagesource/DamageSource.java
|
||||
index 6f1b9cd34a714c02e9800ff2972aa24ad4080842..727a598f1c265ae524c3746c7b7c7d2d0774d530 100644
|
||||
index 6f1b9cd34a714c02e9800ff2972aa24ad4080842..2e443b02108b63fbaea2754b989e241494510363 100644
|
||||
--- a/src/main/java/net/minecraft/world/damagesource/DamageSource.java
|
||||
+++ b/src/main/java/net/minecraft/world/damagesource/DamageSource.java
|
||||
@@ -97,6 +97,8 @@ public class DamageSource {
|
||||
@@ -27,6 +27,7 @@ public class DamageSource {
|
||||
private boolean withSweep = false;
|
||||
private boolean melting = false;
|
||||
private boolean poison = false;
|
||||
+ private boolean scissors = false; // Purpur
|
||||
private Entity customCausingEntity = null; // This field is a helper for when causing entity damage is not set by vanilla
|
||||
|
||||
public DamageSource sweep() {
|
||||
@@ -56,6 +57,17 @@ public class DamageSource {
|
||||
return this.poison;
|
||||
}
|
||||
|
||||
+ // Purpur start
|
||||
+ public DamageSource scissors() {
|
||||
+ this.scissors = true;
|
||||
+ return this;
|
||||
+ }
|
||||
+
|
||||
+ public boolean isScissors() {
|
||||
+ return this.scissors;
|
||||
+ }
|
||||
+ // Purpur end
|
||||
+
|
||||
public Entity getCausingEntity() {
|
||||
return (this.customCausingEntity != null) ? this.customCausingEntity : this.causingEntity;
|
||||
}
|
||||
@@ -93,6 +105,7 @@ public class DamageSource {
|
||||
damageSource.withSweep = this.isSweep();
|
||||
damageSource.poison = this.isPoison();
|
||||
damageSource.melting = this.isMelting();
|
||||
+ damageSource.scissors = this.isScissors(); // Purpur
|
||||
return damageSource;
|
||||
}
|
||||
// CraftBukkit end
|
||||
diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSources.java b/src/main/java/net/minecraft/world/damagesource/DamageSources.java
|
||||
index a47473c9875c70c52b9a61e0156e55961f34c694..23c7f22dacc570837120c28e0a57f8c9155e92fc 100644
|
||||
--- a/src/main/java/net/minecraft/world/damagesource/DamageSources.java
|
||||
+++ b/src/main/java/net/minecraft/world/damagesource/DamageSources.java
|
||||
@@ -44,11 +44,13 @@ public class DamageSources {
|
||||
// CraftBukkit start
|
||||
private final DamageSource melting;
|
||||
private final DamageSource poison;
|
||||
+ private final DamageSource scissors; // Purpur
|
||||
|
||||
public DamageSources(RegistryAccess registryManager) {
|
||||
this.damageTypes = registryManager.registryOrThrow(Registries.DAMAGE_TYPE);
|
||||
this.melting = this.source(DamageTypes.ON_FIRE).melting();
|
||||
this.poison = this.source(DamageTypes.MAGIC).poison();
|
||||
+ this.scissors = this.source(DamageTypes.MAGIC).scissors(); // Purpur
|
||||
// CraftBukkit end
|
||||
this.inFire = this.source(DamageTypes.IN_FIRE);
|
||||
this.lightningBolt = this.source(DamageTypes.LIGHTNING_BOLT);
|
||||
@@ -97,6 +99,12 @@ public class DamageSources {
|
||||
}
|
||||
// CraftBukkit end
|
||||
|
||||
+ public boolean isScissors; // Purpur
|
||||
+
|
||||
public String toString() {
|
||||
return "DamageSource (" + this.type().msgId() + ")";
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSources.java b/src/main/java/net/minecraft/world/damagesource/DamageSources.java
|
||||
index a47473c9875c70c52b9a61e0156e55961f34c694..28b57ed7e862eecc04dfb2eac0093385b64460e7 100644
|
||||
--- a/src/main/java/net/minecraft/world/damagesource/DamageSources.java
|
||||
+++ b/src/main/java/net/minecraft/world/damagesource/DamageSources.java
|
||||
@@ -277,4 +277,11 @@ public class DamageSources {
|
||||
public DamageSource genericKill() {
|
||||
return this.genericKill;
|
||||
}
|
||||
+ // Purpur start
|
||||
+ public DamageSource scissors() {
|
||||
+ DamageSource source = new DamageSource(this.damageTypes.getHolderOrThrow(DamageTypes.MAGIC));
|
||||
+ source.isScissors = true;
|
||||
+ return source;
|
||||
+ return this.scissors;
|
||||
+ }
|
||||
+ // Purpur end
|
||||
}
|
||||
+
|
||||
public DamageSource inFire() {
|
||||
return this.inFire;
|
||||
}
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
index 57734b187e3a66d0d244db2f7968256884957ff2..6714c095714c3a34464b9190be964ceaac718d45 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
|
||||
@@ -5,47 +5,83 @@ Subject: [PATCH] Stonecutter damage
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/damagesource/CombatTracker.java b/src/main/java/net/minecraft/world/damagesource/CombatTracker.java
|
||||
index 9e3608650c44ef5fa724c3aea86603d7bd02429c..8c2c515f1b5f56bf1d6cf0c35d4f0fa7b593d1a0 100644
|
||||
index 5c9d49b40a940df724101bef339a9ac5a31fd025..8ed6b8ddc76bda3d4f298b3076dba9275cec93d9 100644
|
||||
--- a/src/main/java/net/minecraft/world/damagesource/CombatTracker.java
|
||||
+++ b/src/main/java/net/minecraft/world/damagesource/CombatTracker.java
|
||||
@@ -102,6 +102,8 @@ public class CombatTracker {
|
||||
// Purpur start
|
||||
if (damageSource.isScissors) {
|
||||
if (damageSource.isScissors()) {
|
||||
return damageSource.getLocalizedDeathMessage(org.purpurmc.purpur.PurpurConfig.deathMsgRunWithScissors, this.mob);
|
||||
+ } else if (damageSource.isStoneCutter) {
|
||||
+ } else if (damageSource.isStonecutter()) {
|
||||
+ return damageSource.getLocalizedDeathMessage(org.purpurmc.purpur.PurpurConfig.deathMsgStonecutter, this.mob);
|
||||
}
|
||||
// Purpur end
|
||||
return damageSource.getLocalizedDeathMessage(this.mob);
|
||||
diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSource.java b/src/main/java/net/minecraft/world/damagesource/DamageSource.java
|
||||
index 727a598f1c265ae524c3746c7b7c7d2d0774d530..478173fe8e61730a2210e886a4c8dc2a6e018e90 100644
|
||||
index 2e443b02108b63fbaea2754b989e241494510363..09aa1677ad67701d592c18078eee5bd0317ba7c4 100644
|
||||
--- a/src/main/java/net/minecraft/world/damagesource/DamageSource.java
|
||||
+++ b/src/main/java/net/minecraft/world/damagesource/DamageSource.java
|
||||
@@ -99,6 +99,8 @@ public class DamageSource {
|
||||
@@ -28,6 +28,7 @@ public class DamageSource {
|
||||
private boolean melting = false;
|
||||
private boolean poison = false;
|
||||
private boolean scissors = false; // Purpur
|
||||
+ private boolean stonecutter = false; // Purpur
|
||||
private Entity customCausingEntity = null; // This field is a helper for when causing entity damage is not set by vanilla
|
||||
|
||||
public boolean isScissors; // Purpur
|
||||
|
||||
+ public boolean isStoneCutter; // Purpur
|
||||
+
|
||||
public String toString() {
|
||||
return "DamageSource (" + this.type().msgId() + ")";
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSources.java b/src/main/java/net/minecraft/world/damagesource/DamageSources.java
|
||||
index 28b57ed7e862eecc04dfb2eac0093385b64460e7..0f7d3e8573462c6fde8e5e2c1e86ad8406b9f549 100644
|
||||
--- a/src/main/java/net/minecraft/world/damagesource/DamageSources.java
|
||||
+++ b/src/main/java/net/minecraft/world/damagesource/DamageSources.java
|
||||
@@ -283,5 +283,11 @@ public class DamageSources {
|
||||
source.isScissors = true;
|
||||
return source;
|
||||
public DamageSource sweep() {
|
||||
@@ -66,6 +67,15 @@ public class DamageSource {
|
||||
public boolean isScissors() {
|
||||
return this.scissors;
|
||||
}
|
||||
+
|
||||
+ public DamageSource stonecutter() {
|
||||
+ DamageSource source = new DamageSource(this.damageTypes.getHolderOrThrow(DamageTypes.MAGIC));
|
||||
+ source.isStoneCutter = true;
|
||||
+ return source;
|
||||
+ this.stonecutter = true;
|
||||
+ return this;
|
||||
+ }
|
||||
+
|
||||
+ public boolean isStonecutter() {
|
||||
+ return this.stonecutter;
|
||||
+ }
|
||||
// Purpur end
|
||||
}
|
||||
|
||||
public Entity getCausingEntity() {
|
||||
@@ -106,6 +116,7 @@ public class DamageSource {
|
||||
damageSource.poison = this.isPoison();
|
||||
damageSource.melting = this.isMelting();
|
||||
damageSource.scissors = this.isScissors(); // Purpur
|
||||
+ damageSource.stonecutter = this.isStonecutter(); // Purpur
|
||||
return damageSource;
|
||||
}
|
||||
// CraftBukkit end
|
||||
diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSources.java b/src/main/java/net/minecraft/world/damagesource/DamageSources.java
|
||||
index 23c7f22dacc570837120c28e0a57f8c9155e92fc..2c1fdc031bcfc8f39692312e9ce9c5a3cf987349 100644
|
||||
--- a/src/main/java/net/minecraft/world/damagesource/DamageSources.java
|
||||
+++ b/src/main/java/net/minecraft/world/damagesource/DamageSources.java
|
||||
@@ -45,12 +45,14 @@ public class DamageSources {
|
||||
private final DamageSource melting;
|
||||
private final DamageSource poison;
|
||||
private final DamageSource scissors; // Purpur
|
||||
+ private final DamageSource stonecutter; // Purpur
|
||||
|
||||
public DamageSources(RegistryAccess registryManager) {
|
||||
this.damageTypes = registryManager.registryOrThrow(Registries.DAMAGE_TYPE);
|
||||
this.melting = this.source(DamageTypes.ON_FIRE).melting();
|
||||
this.poison = this.source(DamageTypes.MAGIC).poison();
|
||||
this.scissors = this.source(DamageTypes.MAGIC).scissors(); // Purpur
|
||||
+ this.stonecutter = this.source(DamageTypes.MAGIC).stonecutter(); // Purpur
|
||||
// CraftBukkit end
|
||||
this.inFire = this.source(DamageTypes.IN_FIRE);
|
||||
this.lightningBolt = this.source(DamageTypes.LIGHTNING_BOLT);
|
||||
@@ -103,6 +105,9 @@ public class DamageSources {
|
||||
public DamageSource scissors() {
|
||||
return this.scissors;
|
||||
}
|
||||
+ public DamageSource stonecutter() {
|
||||
+ return this.stonecutter;
|
||||
+ }
|
||||
// Purpur end
|
||||
|
||||
public DamageSource inFire() {
|
||||
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 77ae7b8ab24935d046cce1f8f7f476310876f9df..579abfbe791052507b15c14d8c81e39b2fdd6520 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/StonecutterBlock.java
|
||||
@@ -87,6 +123,19 @@ index 0dc05919dfbbf73230505fcdc25d949b1602801c..996bd26e95e766ce4ca7e61d060881fe
|
||||
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 aa89fcab22c7ad0c9425f5ae65cc2c6b150579cc..069ea4dc556d179d166e1dba3527c9def7129e65 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
||||
@@ -1133,7 +1133,7 @@ public class CraftEventFactory {
|
||||
return CraftEventFactory.callEntityDamageEvent(source.getDirectBlock(), entity, DamageCause.LAVA, bukkitDamageSource, modifiers, modifierFunctions, cancelled);
|
||||
} else if (source.getDirectBlock() != null) {
|
||||
DamageCause cause;
|
||||
- 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)) {
|
||||
+ 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
|
||||
cause = DamageCause.CONTACT;
|
||||
} else if (source.is(DamageTypes.HOT_FLOOR)) {
|
||||
cause = DamageCause.HOT_FLOOR;
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
index c6628a28387023b334dd99a4e469126a2108c38b..3a49455509a26063a62e39fb3d3ad81e80bced54 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Add option for always showing item in player death messages
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/damagesource/CombatTracker.java b/src/main/java/net/minecraft/world/damagesource/CombatTracker.java
|
||||
index 8c2c515f1b5f56bf1d6cf0c35d4f0fa7b593d1a0..6e8d9be28c5908fb12c44c0ecb0e02180601371a 100644
|
||||
index 8ed6b8ddc76bda3d4f298b3076dba9275cec93d9..1653d154edb38a6450ee51cb5e5b8e3d37a1784e 100644
|
||||
--- a/src/main/java/net/minecraft/world/damagesource/CombatTracker.java
|
||||
+++ b/src/main/java/net/minecraft/world/damagesource/CombatTracker.java
|
||||
@@ -59,7 +59,7 @@ public class CombatTracker {
|
||||
@@ -18,10 +18,10 @@ index 8c2c515f1b5f56bf1d6cf0c35d4f0fa7b593d1a0..6e8d9be28c5908fb12c44c0ecb0e0218
|
||||
|
||||
private Component getFallMessage(CombatEntry damageRecord, @Nullable Entity attacker) {
|
||||
diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSource.java b/src/main/java/net/minecraft/world/damagesource/DamageSource.java
|
||||
index 478173fe8e61730a2210e886a4c8dc2a6e018e90..081bf5e60cd17fc88efeba3adf1c113bd8958e2a 100644
|
||||
index 09aa1677ad67701d592c18078eee5bd0317ba7c4..4b920672dbd7d9baf15191caa8892359d378f3e7 100644
|
||||
--- a/src/main/java/net/minecraft/world/damagesource/DamageSource.java
|
||||
+++ b/src/main/java/net/minecraft/world/damagesource/DamageSource.java
|
||||
@@ -169,7 +169,7 @@ public class DamageSource {
|
||||
@@ -189,7 +189,7 @@ public class DamageSource {
|
||||
|
||||
ItemStack itemstack1 = itemstack;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user