diff --git a/src/generated/resources/.cache/2e07f3c482445536d45c00e6abf223465c01c841 b/src/generated/resources/.cache/2e07f3c482445536d45c00e6abf223465c01c841 index 1bd85693b..04f76e7be 100644 --- a/src/generated/resources/.cache/2e07f3c482445536d45c00e6abf223465c01c841 +++ b/src/generated/resources/.cache/2e07f3c482445536d45c00e6abf223465c01c841 @@ -1,4 +1,4 @@ -// 1.21.1 2025-04-14T16:44:38.0133635 Tags for minecraft:item mod id superbwarfare +// 1.21.1 2025-04-18T00:48:29.3124197 Tags for minecraft:item mod id superbwarfare 44a232152f5941d0435a35483b37f8ed22fd10bf data/c/tags/item/dusts.json 0fa06c2ff83bf09797e3ddff90f62d1124e645b4 data/c/tags/item/dusts/coal_coke.json 295ddf906b7133a0558d03e9a60eea18281fe430 data/c/tags/item/dusts/iron.json @@ -49,8 +49,3 @@ a249d9d052cdc24b34e0e51ab991329f6c76e8ab data/superbwarfare/tags/item/shotgun.js 7a12c751d024c06b3e88657afddc84fce8e13295 data/superbwarfare/tags/item/sniper_rifle.json 30a6a2a2031c2fc53accf833c1760697462c5b33 data/superbwarfare/tags/item/storage_blocks/cemented_carbide.json de0d84361d5208127bff21e915987ec561cdef13 data/superbwarfare/tags/item/storage_blocks/steel.json -9af8a0147d1e920ef2a2b990bc9010367cf3b7df data/superbwarfare/tags/item/use_handgun_ammo.json -0ab1b2a8f5433e0d1b03446a9d0d9428e9d64feb data/superbwarfare/tags/item/use_heavy_ammo.json -ee130846fa0c4e4a51833c6a0b1de7daaa098a73 data/superbwarfare/tags/item/use_rifle_ammo.json -a249d9d052cdc24b34e0e51ab991329f6c76e8ab data/superbwarfare/tags/item/use_shotgun_ammo.json -7a12c751d024c06b3e88657afddc84fce8e13295 data/superbwarfare/tags/item/use_sniper_ammo.json diff --git a/src/generated/resources/data/superbwarfare/tags/item/use_handgun_ammo.json b/src/generated/resources/data/superbwarfare/tags/item/use_handgun_ammo.json deleted file mode 100644 index 8315d7d0a..000000000 --- a/src/generated/resources/data/superbwarfare/tags/item/use_handgun_ammo.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "values": [ - "superbwarfare:glock_17", - "superbwarfare:glock_18", - "superbwarfare:m_1911", - "superbwarfare:vector", - "superbwarfare:mp_443" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/superbwarfare/tags/item/use_heavy_ammo.json b/src/generated/resources/data/superbwarfare/tags/item/use_heavy_ammo.json deleted file mode 100644 index 2aa78be0d..000000000 --- a/src/generated/resources/data/superbwarfare/tags/item/use_heavy_ammo.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "superbwarfare:ntw_20" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/superbwarfare/tags/item/use_rifle_ammo.json b/src/generated/resources/data/superbwarfare/tags/item/use_rifle_ammo.json deleted file mode 100644 index 8a7d36716..000000000 --- a/src/generated/resources/data/superbwarfare/tags/item/use_rifle_ammo.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "values": [ - "superbwarfare:m_4", - "superbwarfare:hk_416", - "superbwarfare:sks", - "superbwarfare:minigun", - "superbwarfare:devotion", - "superbwarfare:m_60", - "superbwarfare:mk_14", - "superbwarfare:marlin", - "superbwarfare:ak_47", - "superbwarfare:ak_12", - "superbwarfare:qbz_95", - "superbwarfare:rpk", - "superbwarfare:trachelium", - "superbwarfare:insidious" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/superbwarfare/tags/item/use_shotgun_ammo.json b/src/generated/resources/data/superbwarfare/tags/item/use_shotgun_ammo.json deleted file mode 100644 index 9bca8d632..000000000 --- a/src/generated/resources/data/superbwarfare/tags/item/use_shotgun_ammo.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "values": [ - "superbwarfare:homemade_shotgun", - "superbwarfare:m_870", - "superbwarfare:aa_12" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/superbwarfare/tags/item/use_sniper_ammo.json b/src/generated/resources/data/superbwarfare/tags/item/use_sniper_ammo.json deleted file mode 100644 index d869e1190..000000000 --- a/src/generated/resources/data/superbwarfare/tags/item/use_sniper_ammo.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "values": [ - "superbwarfare:hunting_rifle", - "superbwarfare:sentinel", - "superbwarfare:svd", - "superbwarfare:m_98b", - "superbwarfare:k_98", - "superbwarfare:mosin_nagant" - ] -} \ No newline at end of file diff --git a/src/main/java/com/atsuishio/superbwarfare/datagen/ModItemTagProvider.java b/src/main/java/com/atsuishio/superbwarfare/datagen/ModItemTagProvider.java index 8f510ac85..5c8f15092 100644 --- a/src/main/java/com/atsuishio/superbwarfare/datagen/ModItemTagProvider.java +++ b/src/main/java/com/atsuishio/superbwarfare/datagen/ModItemTagProvider.java @@ -101,20 +101,6 @@ public class ModItemTagProvider extends ItemTagsProvider { ModItems.TASER.get() ); - this.tag(ModTags.Items.USE_HANDGUN_AMMO).add( - ModItems.GLOCK_17.get(), ModItems.GLOCK_18.get(), ModItems.M_1911.get(), ModItems.VECTOR.get(), ModItems.MP_443.get() - ); - - this.tag(ModTags.Items.USE_RIFLE_AMMO).add(ModItems.M_4.get(), ModItems.HK_416.get(), ModItems.SKS.get(), ModItems.MINIGUN.get(), ModItems.DEVOTION.get(), ModItems.M_60.get(), - ModItems.MK_14.get(), ModItems.MARLIN.get(), ModItems.AK_47.get(), ModItems.AK_12.get(), ModItems.QBZ_95.get(), ModItems.RPK.get(), ModItems.TRACHELIUM.get(), ModItems.INSIDIOUS.get()); - - this.tag(ModTags.Items.USE_SHOTGUN_AMMO).add(ModItems.HOMEMADE_SHOTGUN.get(), ModItems.M_870.get(), ModItems.AA_12.get()); - - this.tag(ModTags.Items.USE_SNIPER_AMMO).add(ModItems.HUNTING_RIFLE.get(), ModItems.SENTINEL.get(), - ModItems.SVD.get(), ModItems.M_98B.get(), ModItems.K_98.get(), ModItems.MOSIN_NAGANT.get()); - - this.tag(ModTags.Items.USE_HEAVY_AMMO).add(ModItems.NTW_20.get()); - this.tag(ModTags.Items.LAUNCHER).add(ModItems.RPG.get(), ModItems.JAVELIN.get()) .addTag(ModTags.Items.LAUNCHER_GRENADE); this.tag(ModTags.Items.LAUNCHER_GRENADE).add(ModItems.M_79.get(), ModItems.SECONDARY_CATACLYSM.get()); diff --git a/src/main/java/com/atsuishio/superbwarfare/event/LivingEventHandler.java b/src/main/java/com/atsuishio/superbwarfare/event/LivingEventHandler.java index dc0dadf55..b31b314af 100644 --- a/src/main/java/com/atsuishio/superbwarfare/event/LivingEventHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/event/LivingEventHandler.java @@ -144,24 +144,33 @@ public class LivingEventHandler { if (DamageTypeTool.isGunDamage(source) && stack.getItem() instanceof GunItem) { double distance = entity.position().distanceTo(sourceEntity.position()); - // TODO 正确计算距离衰减 - if (stack.is(ModTags.Items.USE_SHOTGUN_AMMO)) { - var perk = data.perk.get(Perk.Type.AMMO); + var ammoInfo = data.ammoTypeInfo(); + if (ammoInfo.type() == GunData.AmmoConsumeType.PLAYER_AMMO) { + var type = Ammo.getType(ammoInfo.value()); + assert type != null; - if (perk instanceof AmmoPerk ammoPerk && ammoPerk.slug) { - damage = reduceDamageByDistance(amount, distance, 0.015, 30); - } else { - damage = reduceDamageByDistance(amount, distance, 0.05, 15); + switch (type) { + case SHOTGUN -> { + var perk = data.perk.get(Perk.Type.AMMO); + + if (perk instanceof AmmoPerk ammoPerk && ammoPerk.slug) { + damage = reduceDamageByDistance(amount, distance, 0.015, 30); + } else { + damage = reduceDamageByDistance(amount, distance, 0.05, 15); + } + } + + case SNIPER -> damage = reduceDamageByDistance(amount, distance, 0.001, 150); + case HEAVY -> damage = reduceDamageByDistance(amount, distance, 0.0007, 250); + case HANDGUN -> damage = reduceDamageByDistance(amount, distance, 0.03, 40); + case RIFLE -> damage = reduceDamageByDistance(amount, distance, 0.007, 100); } - } else if (stack.is(ModTags.Items.USE_SNIPER_AMMO)) { - damage = reduceDamageByDistance(amount, distance, 0.001, 150); - } else if (stack.is(ModTags.Items.USE_HEAVY_AMMO)) { - damage = reduceDamageByDistance(amount, distance, 0.0007, 250); - } else if (stack.is(ModTags.Items.USE_HANDGUN_AMMO)) { - damage = reduceDamageByDistance(amount, distance, 0.03, 40); - } else if (stack.is(ModTags.Items.SMG)) { + } + + // TODO 正确计算距离衰减 + if (stack.is(ModTags.Items.SMG)) { damage = reduceDamageByDistance(amount, distance, 0.02, 50); - } else if (stack.is(ModTags.Items.USE_RIFLE_AMMO) || stack.getItem() == ModItems.BOCEK.get()) { + } else if (stack.getItem() == ModItems.BOCEK.get()) { damage = reduceDamageByDistance(amount, distance, 0.007, 100); } } diff --git a/src/main/java/com/atsuishio/superbwarfare/init/ModTags.java b/src/main/java/com/atsuishio/superbwarfare/init/ModTags.java index d0841c63d..a9095241d 100644 --- a/src/main/java/com/atsuishio/superbwarfare/init/ModTags.java +++ b/src/main/java/com/atsuishio/superbwarfare/init/ModTags.java @@ -14,13 +14,6 @@ public class ModTags { public static class Items { public static final TagKey GUN = tag("gun"); - - public static final TagKey USE_HANDGUN_AMMO = tag("use_handgun_ammo"); - public static final TagKey USE_RIFLE_AMMO = tag("use_rifle_ammo"); - public static final TagKey USE_SHOTGUN_AMMO = tag("use_shotgun_ammo"); - public static final TagKey USE_SNIPER_AMMO = tag("use_sniper_ammo"); - public static final TagKey USE_HEAVY_AMMO = tag("use_heavy_ammo"); - public static final TagKey SMG = tag("smg"); public static final TagKey HANDGUN = tag("handgun"); public static final TagKey RIFLE = tag("rifle");