调整武器基础伤害不穿透护甲,设置武器穿甲伤害比例,注册4种穿甲伤害类型

This commit is contained in:
Atsuihsio 2024-08-03 17:45:27 +08:00
parent 86ffa2d843
commit 410bed0f45
33 changed files with 106 additions and 44 deletions

View file

@ -17,7 +17,7 @@ import javax.annotation.Nullable;
@SuppressWarnings("OptionalGetWithoutIsPresent") @SuppressWarnings("OptionalGetWithoutIsPresent")
public class ModDamageTypes { public class ModDamageTypes {
public static final ResourceKey<DamageType> GUN_FIRE = ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation(ModUtils.MODID, "gunfire")); public static final ResourceKey<DamageType> GUN_FIRE = ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation(ModUtils.MODID, "gunfire"));
public static final ResourceKey<DamageType> GUN_FIRE_HEADSHOT = ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation(ModUtils.MODID, "gunfire_headshot")); public static final ResourceKey<DamageType> GUN_FIRE_BYPASS = ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation(ModUtils.MODID, "gunfire_bypass"));
public static final ResourceKey<DamageType> ARROW_IN_KNEE = ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation(ModUtils.MODID, "arrow_in_knee")); public static final ResourceKey<DamageType> ARROW_IN_KNEE = ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation(ModUtils.MODID, "arrow_in_knee"));
public static final ResourceKey<DamageType> ARROW_IN_BRAIN = ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation(ModUtils.MODID, "arrow_in_brain")); public static final ResourceKey<DamageType> ARROW_IN_BRAIN = ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation(ModUtils.MODID, "arrow_in_brain"));
public static final ResourceKey<DamageType> MINE = ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation(ModUtils.MODID, "mine")); public static final ResourceKey<DamageType> MINE = ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation(ModUtils.MODID, "mine"));
@ -26,6 +26,12 @@ public class ModDamageTypes {
public static final ResourceKey<DamageType> PROJECTILE_BOOM = ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation(ModUtils.MODID, "projectile_boom")); public static final ResourceKey<DamageType> PROJECTILE_BOOM = ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation(ModUtils.MODID, "projectile_boom"));
public static final ResourceKey<DamageType> CANNON_FIRE = ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation(ModUtils.MODID, "cannon_fire")); public static final ResourceKey<DamageType> CANNON_FIRE = ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation(ModUtils.MODID, "cannon_fire"));
public static final ResourceKey<DamageType> GUN_FIRE_HEADSHOT = ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation(ModUtils.MODID, "gunfire_headshot"));
public static final ResourceKey<DamageType> GUN_FIRE_HEADSHOT_BYPASS = ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation(ModUtils.MODID, "gunfire_headshot_bypass"));
public static final ResourceKey<DamageType> ARROW_IN_KNEE_BYPASS = ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation(ModUtils.MODID, "arrow_in_knee_bypass"));
public static final ResourceKey<DamageType> ARROW_IN_BRAIN_BYPASS = ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation(ModUtils.MODID, "arrow_in_brain_bypass"));
public static DamageSource causeGunFireDamage(RegistryAccess registryAccess, @Nullable Entity directEntity, @Nullable Entity attacker) { public static DamageSource causeGunFireDamage(RegistryAccess registryAccess, @Nullable Entity directEntity, @Nullable Entity attacker) {
return new DamageMessages(registryAccess.registry(Registries.DAMAGE_TYPE).get().getHolderOrThrow(GUN_FIRE), directEntity, attacker); return new DamageMessages(registryAccess.registry(Registries.DAMAGE_TYPE).get().getHolderOrThrow(GUN_FIRE), directEntity, attacker);
} }
@ -58,6 +64,22 @@ public class ModDamageTypes {
return new DamageMessages(registryAccess.registry(Registries.DAMAGE_TYPE).get().getHolderOrThrow(CANNON_FIRE), directEntity, attacker); return new DamageMessages(registryAccess.registry(Registries.DAMAGE_TYPE).get().getHolderOrThrow(CANNON_FIRE), directEntity, attacker);
} }
public static DamageSource causeGunFireDamageBypass(RegistryAccess registryAccess, @Nullable Entity directEntity, @Nullable Entity attacker) {
return new DamageMessages(registryAccess.registry(Registries.DAMAGE_TYPE).get().getHolderOrThrow(GUN_FIRE_BYPASS), directEntity, attacker);
}
public static DamageSource causeGunFireHeadshotDamageBypass(RegistryAccess registryAccess, @Nullable Entity directEntity, @Nullable Entity attacker) {
return new DamageMessages(registryAccess.registry(Registries.DAMAGE_TYPE).get().getHolderOrThrow(GUN_FIRE_HEADSHOT_BYPASS), directEntity, attacker);
}
public static DamageSource causeArrowInKneeDamageBypass(RegistryAccess registryAccess, @Nullable Entity directEntity, @Nullable Entity attacker) {
return new DamageMessages(registryAccess.registry(Registries.DAMAGE_TYPE).get().getHolderOrThrow(ARROW_IN_KNEE_BYPASS), directEntity, attacker);
}
public static DamageSource causeArrowInBrainDamageBypass(RegistryAccess registryAccess, @Nullable Entity directEntity, @Nullable Entity attacker) {
return new DamageMessages(registryAccess.registry(Registries.DAMAGE_TYPE).get().getHolderOrThrow(ARROW_IN_BRAIN_BYPASS), directEntity, attacker);
}
private static class DamageMessages extends DamageSource { private static class DamageMessages extends DamageSource {
public DamageMessages(Holder.Reference<DamageType> typeReference) { public DamageMessages(Holder.Reference<DamageType> typeReference) {
super(typeReference); super(typeReference);

View file

@ -7,6 +7,4 @@ public class RarityTool {
public static final Rarity LEGENDARY = Rarity.create("target_legendary", ChatFormatting.GOLD); public static final Rarity LEGENDARY = Rarity.create("target_legendary", ChatFormatting.GOLD);
public static final Rarity SPECIAL = Rarity.create("target_special", ChatFormatting.RED);
} }

View file

@ -1,10 +1,10 @@
{ {
"replace": false, "replace": false,
"values": [ "values": [
"superbwarfare:gunfire", "superbwarfare:gunfire_bypass",
"superbwarfare:gunfire_headshot", "superbwarfare:gunfire_headshot_bypass",
"superbwarfare:arrow_in_knee", "superbwarfare:arrow_in_knee_bypass",
"superbwarfare:arrow_in_brain", "superbwarfare:arrow_in_brain_bypass",
"superbwarfare:shock", "superbwarfare:shock",
"superbwarfare:cannon_fire" "superbwarfare:cannon_fire"
] ]

View file

@ -1,11 +1,10 @@
{ {
"replace": false, "replace": false,
"values": [ "values": [
"superbwarfare:gunfire", "superbwarfare:gunfire_bypass",
"superbwarfare:gunfire_headshot", "superbwarfare:gunfire_headshot_bypass",
"superbwarfare:arrow_in_knee", "superbwarfare:arrow_in_knee_bypass",
"superbwarfare:arrow_in_brain", "superbwarfare:arrow_in_brain_bypass",
"superbwarfare:shock", "superbwarfare:shock"
"superbwarfare:cannon_fire"
] ]
} }

View file

@ -1,10 +1,10 @@
{ {
"replace": false, "replace": false,
"values": [ "values": [
"superbwarfare:gunfire", "superbwarfare:gunfire_bypass",
"superbwarfare:gunfire_headshot", "superbwarfare:gunfire_headshot_bypass",
"superbwarfare:arrow_in_knee", "superbwarfare:arrow_in_knee_bypass",
"superbwarfare:arrow_in_brain", "superbwarfare:arrow_in_brain_bypass",
"superbwarfare:shock", "superbwarfare:shock",
"superbwarfare:cannon_fire" "superbwarfare:cannon_fire"
] ]

View file

@ -1,10 +1,10 @@
{ {
"replace": false, "replace": false,
"values": [ "values": [
"superbwarfare:gunfire", "superbwarfare:gunfire_bypass",
"superbwarfare:gunfire_headshot", "superbwarfare:gunfire_headshot_bypass",
"superbwarfare:arrow_in_knee", "superbwarfare:arrow_in_knee_bypass",
"superbwarfare:arrow_in_brain", "superbwarfare:arrow_in_brain_bypass",
"superbwarfare:shock", "superbwarfare:shock",
"superbwarfare:cannon_fire" "superbwarfare:cannon_fire"
] ]

View file

@ -0,0 +1,5 @@
{
"exhaustion": 0,
"message_id": "arrow_in_brain",
"scaling": "never"
}

View file

@ -0,0 +1,5 @@
{
"exhaustion": 0,
"message_id": "arrow_in_knee",
"scaling": "never"
}

View file

@ -0,0 +1,5 @@
{
"exhaustion": 0,
"message_id": "gunfire",
"scaling": "never"
}

View file

@ -0,0 +1,5 @@
{
"exhaustion": 0,
"message_id": "gunfire_headshot",
"scaling": "never"
}

View file

@ -17,5 +17,6 @@
"auto": 1, "auto": 1,
"burst_size": 1, "burst_size": 1,
"normal_reload_time": 64, "normal_reload_time": 64,
"empty_reload_time": 85 "empty_reload_time": 85,
"BypassesArmor": 0.1
} }

View file

@ -17,5 +17,6 @@
"auto": 0, "auto": 0,
"burst_size": 1, "burst_size": 1,
"normal_reload_time": 66, "normal_reload_time": 66,
"empty_reload_time": 83 "empty_reload_time": 83,
"BypassesArmor": 0
} }

View file

@ -17,5 +17,6 @@
"auto": 1, "auto": 1,
"burst_size": 1, "burst_size": 1,
"normal_reload_time": 54, "normal_reload_time": 54,
"empty_reload_time": 69 "empty_reload_time": 69,
"BypassesArmor": 0.3
} }

View file

@ -6,5 +6,6 @@
"recoil_y": 0.003, "recoil_y": 0.003,
"headshot": 1.5, "headshot": 1.5,
"damage": 24, "damage": 24,
"weight": 1 "weight": 1,
"BypassesArmor": 0.25
} }

View file

@ -18,5 +18,6 @@
"auto": 1, "auto": 1,
"burst_size": 1, "burst_size": 1,
"normal_reload_time": 73, "normal_reload_time": 73,
"empty_reload_time": 95 "empty_reload_time": 95,
"BypassesArmor": 0.4
} }

View file

@ -17,5 +17,6 @@
"auto": 0, "auto": 0,
"burst_size": 1, "burst_size": 1,
"normal_reload_time": 30, "normal_reload_time": 30,
"empty_reload_time": 35 "empty_reload_time": 35,
"BypassesArmor": 0.15
} }

View file

@ -17,5 +17,6 @@
"auto": 1, "auto": 1,
"burst_size": 1, "burst_size": 1,
"normal_reload_time": 30, "normal_reload_time": 30,
"empty_reload_time": 35 "empty_reload_time": 35,
"BypassesArmor": 0.15
} }

View file

@ -17,5 +17,6 @@
"auto": 1, "auto": 1,
"burst_size": 1, "burst_size": 1,
"normal_reload_time": 56, "normal_reload_time": 56,
"empty_reload_time": 64 "empty_reload_time": 64,
"BypassesArmor": 0.4
} }

View file

@ -15,5 +15,6 @@
"burst": 0, "burst": 0,
"auto": 0, "auto": 0,
"burst_size": 1, "burst_size": 1,
"empty_reload_time": 64 "empty_reload_time": 64,
"BypassesArmor": 0.5
} }

View file

@ -17,5 +17,6 @@
"auto": 1, "auto": 1,
"burst_size": 1, "burst_size": 1,
"normal_reload_time": 56, "normal_reload_time": 56,
"empty_reload_time": 64 "empty_reload_time": 64,
"BypassesArmor": 0.4
} }

View file

@ -18,5 +18,6 @@
"auto": 1, "auto": 1,
"burst_size": 1, "burst_size": 1,
"normal_reload_time": 114, "normal_reload_time": 114,
"empty_reload_time": 133 "empty_reload_time": 133,
"BypassesArmor": 0.4
} }

View file

@ -20,5 +20,6 @@
"prepare_time": 7, "prepare_time": 7,
"prepare_load_time": 36, "prepare_load_time": 36,
"iterative_time": 16, "iterative_time": 16,
"finish_time": 12 "finish_time": 12,
"BypassesArmor": 0.1
} }

View file

@ -20,5 +20,6 @@
"auto": 0, "auto": 0,
"burst_size": 1, "burst_size": 1,
"normal_reload_time": 64, "normal_reload_time": 64,
"empty_reload_time": 86 "empty_reload_time": 86,
"BypassesArmor": 0.6
} }

View file

@ -19,5 +19,6 @@
"burst_size": 1, "burst_size": 1,
"prepare_time": 8, "prepare_time": 8,
"iterative_time": 16, "iterative_time": 16,
"finish_time": 19 "finish_time": 19,
"BypassesArmor": 0.3
} }

View file

@ -9,5 +9,6 @@
"fire_interval": 1, "fire_interval": 1,
"weight": 2, "weight": 2,
"fire_mode": 2, "fire_mode": 2,
"projectile_amount": 1 "projectile_amount": 1,
"BypassesArmor": 0.35
} }

View file

@ -20,5 +20,6 @@
"auto": 1, "auto": 1,
"burst_size": 1, "burst_size": 1,
"normal_reload_time": 58, "normal_reload_time": 58,
"empty_reload_time": 81 "empty_reload_time": 81,
"BypassesArmor": 0.55
} }

View file

@ -21,5 +21,6 @@
"auto": 0, "auto": 0,
"burst_size": 1, "burst_size": 1,
"normal_reload_time": 64, "normal_reload_time": 64,
"empty_reload_time": 87 "empty_reload_time": 87,
"BypassesArmor": 1
} }

View file

@ -18,5 +18,6 @@
"auto": 1, "auto": 1,
"burst_size": 1, "burst_size": 1,
"normal_reload_time": 73, "normal_reload_time": 73,
"empty_reload_time": 95 "empty_reload_time": 95,
"BypassesArmor": 0.35
} }

View file

@ -18,5 +18,6 @@
"auto": 0, "auto": 0,
"burst_size": 1, "burst_size": 1,
"normal_reload_time": 59, "normal_reload_time": 59,
"empty_reload_time": 89 "empty_reload_time": 89,
"BypassesArmor": 0.7
} }

View file

@ -17,5 +17,6 @@
"auto": 0, "auto": 0,
"burst_size": 1, "burst_size": 1,
"normal_reload_time": 54, "normal_reload_time": 54,
"empty_reload_time": 75 "empty_reload_time": 75,
"BypassesArmor": 0.35
} }

View file

@ -17,5 +17,6 @@
"auto": 0, "auto": 0,
"burst_size": 1, "burst_size": 1,
"normal_reload_time": 56, "normal_reload_time": 56,
"empty_reload_time": 70 "empty_reload_time": 70,
"BypassesArmor": 0.6
} }

View file

@ -16,5 +16,6 @@
"burst": 0, "burst": 0,
"auto": 0, "auto": 0,
"burst_size": 1, "burst_size": 1,
"empty_reload_time": 65 "empty_reload_time": 65,
"BypassesArmor": 0.25
} }

View file

@ -17,5 +17,6 @@
"auto": 1, "auto": 1,
"burst_size": 3, "burst_size": 3,
"normal_reload_time": 46, "normal_reload_time": 46,
"empty_reload_time": 64 "empty_reload_time": 64,
"BypassesArmor": 0.15
} }