正确实现entity tag减伤

This commit is contained in:
Light_Quanta 2025-06-13 18:13:10 +08:00
parent 9b7773350f
commit f534e6277a
No known key found for this signature in database
GPG key ID: 11A39A1B8C890959
7 changed files with 17 additions and 6 deletions

View file

@ -43,11 +43,13 @@ public class DamageModify {
RESOURCE_KEY,
FUNCTION,
ENTITY_ID,
ENTITY_TAG,
ALL,
}
private transient TagKey<DamageType> sourceTagKey = null;
private transient ResourceKey<DamageType> sourceKey = null;
private transient TagKey<EntityType<?>> entityTag = null;
private transient Function<DamageSource, Boolean> condition = null;
public DamageModify() {
@ -92,6 +94,9 @@ public class DamageModify {
if (source.startsWith("#")) {
sourceType = SourceType.TAG_KEY;
this.sourceTagKey = TagKey.create(Registries.DAMAGE_TYPE, ResourceLocation.parse(source.substring(1)));
} else if (source.startsWith("@#")) {
sourceType = SourceType.ENTITY_TAG;
this.entityTag = TagKey.create(Registries.ENTITY_TYPE, ResourceLocation.parse(source.substring(2)));
} else if (source.startsWith("@")) {
sourceType = SourceType.ENTITY_ID;
this.entityId = source.substring(1);
@ -133,6 +138,12 @@ public class DamageModify {
yield false;
}
}
case ENTITY_TAG -> {
var directEntity = source.getDirectEntity();
if (directEntity == null) yield false;
yield directEntity.getType().is(entityTag);
}
case ALL -> true;
};
}

View file

@ -73,7 +73,7 @@
{
"Type": "Multiply",
"Value": 8,
"Source": "#superbwarfare:aerial_bomb"
"Source": "@#superbwarfare:aerial_bomb"
},
{
"Type": "Multiply",

View file

@ -77,7 +77,7 @@
{
"Type": "Multiply",
"Value": 2,
"Source": "#superbwarfare:aerial_bomb"
"Source": "@#superbwarfare:aerial_bomb"
},
{
"Type": "Multiply",

View file

@ -72,7 +72,7 @@
{
"Type": "Multiply",
"Value": 3,
"Source": "#superbwarfare:aerial_bomb"
"Source": "@#superbwarfare:aerial_bomb"
},
{
"Type": "Multiply",

View file

@ -77,7 +77,7 @@
{
"Type": "Multiply",
"Value": 2,
"Source": "#superbwarfare:aerial_bomb"
"Source": "@#superbwarfare:aerial_bomb"
},
{
"Type": "Multiply",

View file

@ -61,7 +61,7 @@
{
"Type": "Multiply",
"Value": 2,
"Source": "#superbwarfare:aerial_bomb"
"Source": "@#superbwarfare:aerial_bomb"
},
{
"Type": "Multiply",

View file

@ -32,7 +32,7 @@
{
"Type": "Multiply",
"Value": 3,
"Source": "#superbwarfare:aerial_bomb"
"Source": "@#superbwarfare:aerial_bomb"
},
{
"Type": "Immunity",