diff --git a/src/generated/resources/.cache/fccefbc98890e89f31af48c3878f78fdede0afb2 b/src/generated/resources/.cache/fccefbc98890e89f31af48c3878f78fdede0afb2 index c49937ce2..fb6f1251a 100644 --- a/src/generated/resources/.cache/fccefbc98890e89f31af48c3878f78fdede0afb2 +++ b/src/generated/resources/.cache/fccefbc98890e89f31af48c3878f78fdede0afb2 @@ -1,3 +1,5 @@ -// 1.21.1 2025-03-27T19:46:28.6414823 Tags for minecraft:damage_type mod id superbwarfare -af0be8dca0b255f58322d79eff933eb855406f6b data/superbwarfare/tags/damage_type/projectile.json -3f7d47fe61dde5ebb1ecb7f0f2a4804dc1c8478d data/superbwarfare/tags/damage_type/projectile_absolute.json +// 1.21.1 2025-06-24T02:18:26.2390652 Tags for minecraft:damage_type mod id superbwarfare +ddb620a872e399a1733001853474cf0b7eb9dc88 data/superbwarfare/tags/damage_type/projectile.json +a14ba1399ece410382dce60dda85902fdd87bf23 data/superbwarfare/tags/damage_type/projectile_absolute.json +49e069125ecef20d6b00fd22e219bfdee5b90b9b data/superbwarfare/tags/damage_type/vehicle_ignore.json +146a85f38dd9a68950693b6493db746c1c1b7918 data/superbwarfare/tags/damage_type/vehicle_not_absorb.json diff --git a/src/generated/resources/data/superbwarfare/tags/damage_type/projectile.json b/src/generated/resources/data/superbwarfare/tags/damage_type/projectile.json index c54d4a344..75e16298f 100644 --- a/src/generated/resources/data/superbwarfare/tags/damage_type/projectile.json +++ b/src/generated/resources/data/superbwarfare/tags/damage_type/projectile.json @@ -4,6 +4,34 @@ "superbwarfare:gunfire_headshot", "minecraft:arrow", "minecraft:trident", - "minecraft:thrown" + "minecraft:thrown", + { + "id": "tacz:bullet", + "required": false + }, + { + "id": "tacz:bullet_void", + "required": false + }, + { + "id": "virtuarealcraft:rain_crystal", + "required": false + }, + { + "id": "virtuarealcraft:rain_shower_butterfly", + "required": false + }, + { + "id": "virtuarealcraft:sparkle_butterfly", + "required": false + }, + { + "id": "dreamaticvoyage:blood_crystal", + "required": false + }, + { + "id": "dreamaticvoyage:leviy_beam", + "required": false + } ] } \ No newline at end of file diff --git a/src/generated/resources/data/superbwarfare/tags/damage_type/projectile_absolute.json b/src/generated/resources/data/superbwarfare/tags/damage_type/projectile_absolute.json index 2899ac866..ac2bd89b1 100644 --- a/src/generated/resources/data/superbwarfare/tags/damage_type/projectile_absolute.json +++ b/src/generated/resources/data/superbwarfare/tags/damage_type/projectile_absolute.json @@ -1,6 +1,18 @@ { "values": [ "superbwarfare:gunfire_absolute", - "superbwarfare:gunfire_headshot_absolute" + "superbwarfare:gunfire_headshot_absolute", + { + "id": "tacz:bullet_ignore_armor", + "required": false + }, + { + "id": "tacz:bullet_void_ignore_armor", + "required": false + }, + { + "id": "dreamaticvoyage:leviy_beam_absolute", + "required": false + } ] } \ No newline at end of file diff --git a/src/generated/resources/data/superbwarfare/tags/damage_type/vehicle_ignore.json b/src/generated/resources/data/superbwarfare/tags/damage_type/vehicle_ignore.json new file mode 100644 index 000000000..b2a748b40 --- /dev/null +++ b/src/generated/resources/data/superbwarfare/tags/damage_type/vehicle_ignore.json @@ -0,0 +1,8 @@ +{ + "values": [ + { + "id": "sona:injury", + "required": false + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/superbwarfare/tags/damage_type/vehicle_not_absorb.json b/src/generated/resources/data/superbwarfare/tags/damage_type/vehicle_not_absorb.json new file mode 100644 index 000000000..04e23806a --- /dev/null +++ b/src/generated/resources/data/superbwarfare/tags/damage_type/vehicle_not_absorb.json @@ -0,0 +1,9 @@ +{ + "values": [ + "minecraft:explosion", + "minecraft:player_explosion", + "superbwarfare:custom_explosion", + "superbwarfare:mine", + "superbwarfare:projectile_boom" + ] +} \ No newline at end of file diff --git a/src/main/java/com/atsuishio/superbwarfare/datagen/ModDamageTypeTagProvider.java b/src/main/java/com/atsuishio/superbwarfare/datagen/ModDamageTypeTagProvider.java index 22d0c3c6b..94c7e7f4d 100644 --- a/src/main/java/com/atsuishio/superbwarfare/datagen/ModDamageTypeTagProvider.java +++ b/src/main/java/com/atsuishio/superbwarfare/datagen/ModDamageTypeTagProvider.java @@ -6,6 +6,7 @@ import com.atsuishio.superbwarfare.init.ModTags; import net.minecraft.core.HolderLookup; import net.minecraft.data.PackOutput; import net.minecraft.data.tags.DamageTypeTagsProvider; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.damagesource.DamageTypes; import net.neoforged.neoforge.common.data.ExistingFileHelper; import org.jetbrains.annotations.NotNull; @@ -22,18 +23,21 @@ public class ModDamageTypeTagProvider extends DamageTypeTagsProvider { @Override protected void addTags(HolderLookup.@NotNull Provider pProvider) { this.tag(ModTags.DamageTypes.PROJECTILE).add(ModDamageTypes.GUN_FIRE, ModDamageTypes.GUN_FIRE_HEADSHOT, - DamageTypes.ARROW, DamageTypes.TRIDENT, DamageTypes.THROWN); -// .addOptional(new ResourceLocation("tacz", "bullet")) -// .addOptional(new ResourceLocation("tacz", "bullet_void")) -// .addOptional(new ResourceLocation("virtuarealcraft", "rain_crystal")) -// .addOptional(new ResourceLocation("virtuarealcraft", "rain_shower_butterfly")) -// .addOptional(new ResourceLocation("virtuarealcraft", "sparkle_butterfly")) -// .addOptional(new ResourceLocation("dreamaticvoyage", "blood_crystal")) -// .addOptional(new ResourceLocation("dreamaticvoyage", "leviy_beam")); - this.tag(ModTags.DamageTypes.PROJECTILE_ABSOLUTE).add(ModDamageTypes.GUN_FIRE_ABSOLUTE, ModDamageTypes.GUN_FIRE_HEADSHOT_ABSOLUTE); -// .addOptional(new ResourceLocation("tacz", "bullet_ignore_armor")) -// .addOptional(new ResourceLocation("tacz", "bullet_void_ignore_armor")) -// .addOptional(new ResourceLocation("dreamaticvoyage", "leviy_beam_absolute")); + DamageTypes.ARROW, DamageTypes.TRIDENT, DamageTypes.THROWN) + .addOptional(ResourceLocation.fromNamespaceAndPath("tacz", "bullet")) + .addOptional(ResourceLocation.fromNamespaceAndPath("tacz", "bullet_void")) + .addOptional(ResourceLocation.fromNamespaceAndPath("virtuarealcraft", "rain_crystal")) + .addOptional(ResourceLocation.fromNamespaceAndPath("virtuarealcraft", "rain_shower_butterfly")) + .addOptional(ResourceLocation.fromNamespaceAndPath("virtuarealcraft", "sparkle_butterfly")) + .addOptional(ResourceLocation.fromNamespaceAndPath("dreamaticvoyage", "blood_crystal")) + .addOptional(ResourceLocation.fromNamespaceAndPath("dreamaticvoyage", "leviy_beam")); + this.tag(ModTags.DamageTypes.PROJECTILE_ABSOLUTE).add(ModDamageTypes.GUN_FIRE_ABSOLUTE, ModDamageTypes.GUN_FIRE_HEADSHOT_ABSOLUTE) + .addOptional(ResourceLocation.fromNamespaceAndPath("tacz", "bullet_ignore_armor")) + .addOptional(ResourceLocation.fromNamespaceAndPath("tacz", "bullet_void_ignore_armor")) + .addOptional(ResourceLocation.fromNamespaceAndPath("dreamaticvoyage", "leviy_beam_absolute")); + this.tag(ModTags.DamageTypes.VEHICLE_IGNORE) + .addOptional(ResourceLocation.fromNamespaceAndPath("sona", "injury")); + this.tag(ModTags.DamageTypes.VEHICLE_NOT_ABSORB) + .add(DamageTypes.EXPLOSION, DamageTypes.PLAYER_EXPLOSION, ModDamageTypes.CUSTOM_EXPLOSION, ModDamageTypes.MINE, ModDamageTypes.PROJECTILE_BOOM); } - } diff --git a/src/main/java/com/atsuishio/superbwarfare/event/LivingEventHandler.java b/src/main/java/com/atsuishio/superbwarfare/event/LivingEventHandler.java index 62d3c2f1a..43e12a8b5 100644 --- a/src/main/java/com/atsuishio/superbwarfare/event/LivingEventHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/event/LivingEventHandler.java @@ -101,23 +101,20 @@ public class LivingEventHandler { private static void handleVehicleHurt(LivingIncomingDamageEvent event) { var vehicle = event.getEntity().getVehicle(); - if (vehicle instanceof VehicleEntity) { - if (vehicle instanceof ArmedVehicleEntity iArmedVehicle) { - if (iArmedVehicle.hidePassenger(event.getEntity())) { - if (!event.getSource().is(ModDamageTypes.VEHICLE_EXPLOSION)) { - event.setCanceled(true); - } - } else { - if (!(event.getSource().is(DamageTypes.EXPLOSION) - || event.getSource().is(DamageTypes.PLAYER_EXPLOSION) - || event.getSource().is(ModDamageTypes.CUSTOM_EXPLOSION) - || event.getSource().is(ModDamageTypes.MINE) - || event.getSource().is(ModDamageTypes.PROJECTILE_BOOM))) { - vehicle.hurt(event.getSource(), 0.7f * event.getAmount()); - } + if (vehicle instanceof VehicleEntity && vehicle instanceof ArmedVehicleEntity iArmedVehicle) { + var source = event.getSource(); + if (source.is(ModTags.DamageTypes.VEHICLE_IGNORE)) return; - event.setAmount(0.3f * event.getAmount()); + if (iArmedVehicle.hidePassenger(event.getEntity())) { + if (!source.is(ModDamageTypes.VEHICLE_EXPLOSION)) { + event.setCanceled(true); } + } else { + if (!source.is(ModTags.DamageTypes.VEHICLE_NOT_ABSORB)) { + vehicle.hurt(event.getSource(), 0.7f * event.getAmount()); + } + + event.setAmount(0.3f * event.getAmount()); } } } diff --git a/src/main/java/com/atsuishio/superbwarfare/init/ModTags.java b/src/main/java/com/atsuishio/superbwarfare/init/ModTags.java index 592d9f033..1525c0002 100644 --- a/src/main/java/com/atsuishio/superbwarfare/init/ModTags.java +++ b/src/main/java/com/atsuishio/superbwarfare/init/ModTags.java @@ -60,6 +60,11 @@ public class ModTags { public static final TagKey PROJECTILE = tag("projectile"); public static final TagKey PROJECTILE_ABSOLUTE = tag("projectile_absolute"); + // 在载具上的实体受到带有此标签的伤害类型的伤害时,不会将伤害转移到载具上 + public static final TagKey VEHICLE_IGNORE = tag("vehicle_ignore"); + // 在载具上的实体受到带有此标签的伤害类型的伤害时,只会受到伤害减免,而不会转移到载具上 + public static final TagKey VEHICLE_NOT_ABSORB = tag("vehicle_not_absorb"); + private static TagKey tag(String name) { return TagKey.create(Registries.DAMAGE_TYPE, Mod.loc(name)); }