添加了伤害类型tag

This commit is contained in:
17146 2024-09-26 10:49:28 +08:00
parent 69c4efd6b2
commit c263c5ce2e
8 changed files with 74 additions and 10 deletions

View file

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

View file

@ -0,0 +1,13 @@
{
"values": [
"superbwarfare:gunfire",
"superbwarfare:gunfire_headshot",
"minecraft:arrow",
"minecraft:trident",
"minecraft:thrown",
{
"id": "tacz:bullet",
"required": false
}
]
}

View file

@ -0,0 +1,10 @@
{
"values": [
"superbwarfare:gunfire_absolute",
"superbwarfare:gunfire_headshot_absolute",
{
"id": "tacz:bullet_ignore_armor",
"required": false
}
]
}

View file

@ -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));
}
}

View file

@ -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<HolderLookup.Provider> 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"));
}
}

View file

@ -70,8 +70,6 @@ public class BocekArrowEntity extends AbstractArrow implements ItemSupplier {
@Override
protected void onHitEntity(EntityHitResult result) {
this.discard();
}

View file

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

View file

@ -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<DamageType> PROJECTILE = tag("projectile");
public static final TagKey<DamageType> PROJECTILE_ABSOLUTE = tag("projectile_absolute");
private static TagKey<DamageType> tag(String name) {
return TagKey.create(Registries.DAMAGE_TYPE, new ResourceLocation(ModUtils.MODID, name));
}
}
}