diff --git a/src/generated/resources/.cache/fccefbc98890e89f31af48c3878f78fdede0afb2 b/src/generated/resources/.cache/fccefbc98890e89f31af48c3878f78fdede0afb2 new file mode 100644 index 000000000..a0e2e7bf9 --- /dev/null +++ b/src/generated/resources/.cache/fccefbc98890e89f31af48c3878f78fdede0afb2 @@ -0,0 +1,3 @@ +// 1.20.1 2024-09-26T10:48:01.0937773 Tags for minecraft:damage_type mod id superbwarfare +839ee2020032c8add1d2d30708b6fa32fd8ae734 data/superbwarfare/tags/damage_type/projectile.json +85cb0739f1ef55bd7187621db3e912c923ac9269 data/superbwarfare/tags/damage_type/projectile_absolute.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 new file mode 100644 index 000000000..9e4ccd87b --- /dev/null +++ b/src/generated/resources/data/superbwarfare/tags/damage_type/projectile.json @@ -0,0 +1,13 @@ +{ + "values": [ + "superbwarfare:gunfire", + "superbwarfare:gunfire_headshot", + "minecraft:arrow", + "minecraft:trident", + "minecraft:thrown", + { + "id": "tacz:bullet", + "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 new file mode 100644 index 000000000..1a35acf07 --- /dev/null +++ b/src/generated/resources/data/superbwarfare/tags/damage_type/projectile_absolute.json @@ -0,0 +1,10 @@ +{ + "values": [ + "superbwarfare:gunfire_absolute", + "superbwarfare:gunfire_headshot_absolute", + { + "id": "tacz:bullet_ignore_armor", + "required": false + } + ] +} \ No newline at end of file diff --git a/src/main/java/net/mcreator/superbwarfare/datagen/DataGenerators.java b/src/main/java/net/mcreator/superbwarfare/datagen/DataGenerators.java index 0d7986dee..7fa696f55 100644 --- a/src/main/java/net/mcreator/superbwarfare/datagen/DataGenerators.java +++ b/src/main/java/net/mcreator/superbwarfare/datagen/DataGenerators.java @@ -27,5 +27,6 @@ public class DataGenerators { generator.addProvider(event.includeServer(), new ModItemModelProvider(packOutput, existingFileHelper)); ModBlockTagProvider tagProvider = generator.addProvider(event.includeServer(), new ModBlockTagProvider(packOutput, lookupProvider, existingFileHelper)); generator.addProvider(event.includeServer(), new ModItemTagProvider(packOutput, lookupProvider, tagProvider.contentsGetter(), existingFileHelper)); + generator.addProvider(event.includeServer(), new ModDamageTypeTagProvider(packOutput, lookupProvider, existingFileHelper)); } } diff --git a/src/main/java/net/mcreator/superbwarfare/datagen/ModDamageTypeTagProvider.java b/src/main/java/net/mcreator/superbwarfare/datagen/ModDamageTypeTagProvider.java new file mode 100644 index 000000000..9fa05f4ae --- /dev/null +++ b/src/main/java/net/mcreator/superbwarfare/datagen/ModDamageTypeTagProvider.java @@ -0,0 +1,31 @@ +package net.mcreator.superbwarfare.datagen; + +import net.mcreator.superbwarfare.ModUtils; +import net.mcreator.superbwarfare.init.ModDamageTypes; +import net.mcreator.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.minecraftforge.common.data.ExistingFileHelper; +import org.jetbrains.annotations.Nullable; + +import java.util.concurrent.CompletableFuture; + +public class ModDamageTypeTagProvider extends DamageTypeTagsProvider { + + public ModDamageTypeTagProvider(PackOutput pOutput, CompletableFuture pLookupProvider, @Nullable ExistingFileHelper existingFileHelper) { + super(pOutput, pLookupProvider, ModUtils.MODID, existingFileHelper); + } + + @Override + protected void addTags(HolderLookup.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")); + this.tag(ModTags.DamageTypes.PROJECTILE_ABSOLUTE).add(ModDamageTypes.GUN_FIRE_ABSOLUTE, ModDamageTypes.GUN_FIRE_HEADSHOT_ABSOLUTE) + .addOptional(new ResourceLocation("tacz", "bullet_ignore_armor")); + } + +} diff --git a/src/main/java/net/mcreator/superbwarfare/entity/projectile/BocekArrowEntity.java b/src/main/java/net/mcreator/superbwarfare/entity/projectile/BocekArrowEntity.java index 946aa869c..848601649 100644 --- a/src/main/java/net/mcreator/superbwarfare/entity/projectile/BocekArrowEntity.java +++ b/src/main/java/net/mcreator/superbwarfare/entity/projectile/BocekArrowEntity.java @@ -70,8 +70,6 @@ public class BocekArrowEntity extends AbstractArrow implements ItemSupplier { @Override protected void onHitEntity(EntityHitResult result) { - - this.discard(); } diff --git a/src/main/java/net/mcreator/superbwarfare/event/LivingEventHandler.java b/src/main/java/net/mcreator/superbwarfare/event/LivingEventHandler.java index 12914a822..3af909ab4 100644 --- a/src/main/java/net/mcreator/superbwarfare/event/LivingEventHandler.java +++ b/src/main/java/net/mcreator/superbwarfare/event/LivingEventHandler.java @@ -90,17 +90,14 @@ public class LivingEventHandler { } } - // TODO 添加TACZ枪械非穿甲伤害的适配 - - if (damageSource.is(ModDamageTypes.GUN_FIRE) - || damageSource.is(ModDamageTypes.GUN_FIRE_HEADSHOT) - || damageSource.is(DamageTypes.ARROW) - || damageSource.is(DamageTypes.TRIDENT) - || damageSource.is(DamageTypes.THROWN) - ) { + if (damageSource.is(ModTags.DamageTypes.PROJECTILE)) { damage = damage * (1 - Mth.clamp(entity.getAttributeValue(ModAttributes.BULLET_RESISTANCE.get()), 0, 1)); } + if (damageSource.is(ModTags.DamageTypes.PROJECTILE_ABSOLUTE)) { + // TODO 添加对于穿透伤害的处理 + } + event.setAmount((float) damage); stack.getOrCreateTag().putDouble("damagetotal", stack.getOrCreateTag().getDouble("damagetotal") + damage); diff --git a/src/main/java/net/mcreator/superbwarfare/init/ModTags.java b/src/main/java/net/mcreator/superbwarfare/init/ModTags.java index 3b1ab93dd..dbd639cd3 100644 --- a/src/main/java/net/mcreator/superbwarfare/init/ModTags.java +++ b/src/main/java/net/mcreator/superbwarfare/init/ModTags.java @@ -1,9 +1,11 @@ package net.mcreator.superbwarfare.init; import net.mcreator.superbwarfare.ModUtils; +import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.ItemTags; import net.minecraft.tags.TagKey; +import net.minecraft.world.damagesource.DamageType; import net.minecraft.world.item.Item; public class ModTags { @@ -30,4 +32,13 @@ public class ModTags { return ItemTags.create(new ResourceLocation(ModUtils.MODID, name)); } } + + public static class DamageTypes { + public static final TagKey PROJECTILE = tag("projectile"); + public static final TagKey PROJECTILE_ABSOLUTE = tag("projectile_absolute"); + + private static TagKey tag(String name) { + return TagKey.create(Registries.DAMAGE_TYPE, new ResourceLocation(ModUtils.MODID, name)); + } + } }