调整武器基础伤害不穿透护甲,设置武器穿甲伤害比例,注册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")
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_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_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"));
@ -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> 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) {
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);
}
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 {
public DamageMessages(Holder.Reference<DamageType> 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 SPECIAL = Rarity.create("target_special", ChatFormatting.RED);
}

View file

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

View file

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

View file

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

View file

@ -1,10 +1,10 @@
{
"replace": false,
"values": [
"superbwarfare:gunfire",
"superbwarfare:gunfire_headshot",
"superbwarfare:arrow_in_knee",
"superbwarfare:arrow_in_brain",
"superbwarfare:gunfire_bypass",
"superbwarfare:gunfire_headshot_bypass",
"superbwarfare:arrow_in_knee_bypass",
"superbwarfare:arrow_in_brain_bypass",
"superbwarfare:shock",
"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,
"burst_size": 1,
"normal_reload_time": 64,
"empty_reload_time": 85
"empty_reload_time": 85,
"BypassesArmor": 0.1
}

View file

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

View file

@ -17,5 +17,6 @@
"auto": 1,
"burst_size": 1,
"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,
"headshot": 1.5,
"damage": 24,
"weight": 1
"weight": 1,
"BypassesArmor": 0.25
}

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -18,5 +18,6 @@
"auto": 1,
"burst_size": 1,
"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_load_time": 36,
"iterative_time": 16,
"finish_time": 12
"finish_time": 12,
"BypassesArmor": 0.1
}

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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