clean up damage type code for stonecutter and scissor patches

This commit is contained in:
granny
2024-02-11 23:12:15 -08:00
parent 70a76c42bf
commit 770fbe66e0
4 changed files with 156 additions and 47 deletions

View File

@@ -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