添加了伤害类型tag
This commit is contained in:
parent
69c4efd6b2
commit
c263c5ce2e
8 changed files with 74 additions and 10 deletions
|
@ -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
|
|
@ -0,0 +1,13 @@
|
||||||
|
{
|
||||||
|
"values": [
|
||||||
|
"superbwarfare:gunfire",
|
||||||
|
"superbwarfare:gunfire_headshot",
|
||||||
|
"minecraft:arrow",
|
||||||
|
"minecraft:trident",
|
||||||
|
"minecraft:thrown",
|
||||||
|
{
|
||||||
|
"id": "tacz:bullet",
|
||||||
|
"required": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"values": [
|
||||||
|
"superbwarfare:gunfire_absolute",
|
||||||
|
"superbwarfare:gunfire_headshot_absolute",
|
||||||
|
{
|
||||||
|
"id": "tacz:bullet_ignore_armor",
|
||||||
|
"required": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -27,5 +27,6 @@ public class DataGenerators {
|
||||||
generator.addProvider(event.includeServer(), new ModItemModelProvider(packOutput, existingFileHelper));
|
generator.addProvider(event.includeServer(), new ModItemModelProvider(packOutput, existingFileHelper));
|
||||||
ModBlockTagProvider tagProvider = generator.addProvider(event.includeServer(), new ModBlockTagProvider(packOutput, lookupProvider, 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 ModItemTagProvider(packOutput, lookupProvider, tagProvider.contentsGetter(), existingFileHelper));
|
||||||
|
generator.addProvider(event.includeServer(), new ModDamageTypeTagProvider(packOutput, lookupProvider, existingFileHelper));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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"));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -70,8 +70,6 @@ public class BocekArrowEntity extends AbstractArrow implements ItemSupplier {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onHitEntity(EntityHitResult result) {
|
protected void onHitEntity(EntityHitResult result) {
|
||||||
|
|
||||||
|
|
||||||
this.discard();
|
this.discard();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -90,17 +90,14 @@ public class LivingEventHandler {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO 添加TACZ枪械非穿甲伤害的适配
|
if (damageSource.is(ModTags.DamageTypes.PROJECTILE)) {
|
||||||
|
|
||||||
if (damageSource.is(ModDamageTypes.GUN_FIRE)
|
|
||||||
|| damageSource.is(ModDamageTypes.GUN_FIRE_HEADSHOT)
|
|
||||||
|| damageSource.is(DamageTypes.ARROW)
|
|
||||||
|| damageSource.is(DamageTypes.TRIDENT)
|
|
||||||
|| damageSource.is(DamageTypes.THROWN)
|
|
||||||
) {
|
|
||||||
damage = damage * (1 - Mth.clamp(entity.getAttributeValue(ModAttributes.BULLET_RESISTANCE.get()), 0, 1));
|
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);
|
event.setAmount((float) damage);
|
||||||
|
|
||||||
stack.getOrCreateTag().putDouble("damagetotal", stack.getOrCreateTag().getDouble("damagetotal") + damage);
|
stack.getOrCreateTag().putDouble("damagetotal", stack.getOrCreateTag().getDouble("damagetotal") + damage);
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
package net.mcreator.superbwarfare.init;
|
package net.mcreator.superbwarfare.init;
|
||||||
|
|
||||||
import net.mcreator.superbwarfare.ModUtils;
|
import net.mcreator.superbwarfare.ModUtils;
|
||||||
|
import net.minecraft.core.registries.Registries;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.tags.ItemTags;
|
import net.minecraft.tags.ItemTags;
|
||||||
import net.minecraft.tags.TagKey;
|
import net.minecraft.tags.TagKey;
|
||||||
|
import net.minecraft.world.damagesource.DamageType;
|
||||||
import net.minecraft.world.item.Item;
|
import net.minecraft.world.item.Item;
|
||||||
|
|
||||||
public class ModTags {
|
public class ModTags {
|
||||||
|
@ -30,4 +32,13 @@ public class ModTags {
|
||||||
return ItemTags.create(new ResourceLocation(ModUtils.MODID, name));
|
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));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue