diff --git a/src/main/java/com/atsuishio/superbwarfare/datagen/ModItemTagProvider.java b/src/main/java/com/atsuishio/superbwarfare/datagen/ModItemTagProvider.java index 74348bbd3..0bda865fd 100644 --- a/src/main/java/com/atsuishio/superbwarfare/datagen/ModItemTagProvider.java +++ b/src/main/java/com/atsuishio/superbwarfare/datagen/ModItemTagProvider.java @@ -84,10 +84,6 @@ public class ModItemTagProvider extends ItemTagsProvider { ModItems.HUNTING_RIFLE.get(), ModItems.NTW_20.get(), ModItems.M_98B.get(), ModItems.SENTINEL.get(), ModItems.M_870.get(), ModItems.MARLIN.get(), ModItems.GLOCK_17.get(), ModItems.GLOCK_18.get(), ModItems.M_1911.get(), ModItems.QBZ_95.get(), ModItems.K_98.get(), ModItems.MOSIN_NAGANT.get()); - this.tag(ModTags.Items.OPEN_BOLT).add(ModItems.ABEKIRI.get(), ModItems.AK_47.get(), ModItems.AK_12.get(), ModItems.SVD.get(), ModItems.M_60.get(), ModItems.MK_14.get(), ModItems.VECTOR.get(), - ModItems.SKS.get(), ModItems.RPK.get(), ModItems.HK_416.get(), ModItems.AA_12.get(), ModItems.M_4.get(), ModItems.DEVOTION.get(), ModItems.NTW_20.get(), - ModItems.M_98B.get(), ModItems.SENTINEL.get(), ModItems.GLOCK_17.get(), ModItems.GLOCK_18.get(), ModItems.M_1911.get(), ModItems.QBZ_95.get()); - this.tag(ModTags.Items.USE_HANDGUN_AMMO).add(ModItems.GLOCK_17.get(), ModItems.GLOCK_18.get(), ModItems.M_1911.get(), ModItems.VECTOR.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(), diff --git a/src/main/java/com/atsuishio/superbwarfare/event/GunEventHandler.java b/src/main/java/com/atsuishio/superbwarfare/event/GunEventHandler.java index 39efb4837..5b9269415 100644 --- a/src/main/java/com/atsuishio/superbwarfare/event/GunEventHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/event/GunEventHandler.java @@ -8,6 +8,7 @@ import com.atsuishio.superbwarfare.init.ModItems; import com.atsuishio.superbwarfare.init.ModPerks; import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModTags; +import com.atsuishio.superbwarfare.item.gun.GunItem; import com.atsuishio.superbwarfare.network.ModVariables; import com.atsuishio.superbwarfare.perk.AmmoPerk; import com.atsuishio.superbwarfare.perk.Perk; @@ -311,12 +312,17 @@ public class GunEventHandler { */ private static void handleGunReload(Player player) { ItemStack stack = player.getMainHandItem(); + GunItem gunItem = null; + if (stack.getItem() instanceof GunItem gunItem1) { + gunItem = gunItem1; + } + if (gunItem == null) return; CompoundTag tag = stack.getOrCreateTag(); CompoundTag data = stack.getOrCreateTag().getCompound("GunData"); // 启动换弹 if (tag.getBoolean("start_reload")) { MinecraftForge.EVENT_BUS.post(new ReloadEvent.Pre(player, stack)); - if (stack.is(ModTags.Items.OPEN_BOLT)) { + if (gunItem.isOpenBolt(stack)) { if (GunsTool.getGunIntTag(stack, "Ammo", 0) == 0) { data.putInt("ReloadTime", data.getInt("EmptyReloadTime") + 1); stack.getOrCreateTag().putBoolean("is_empty_reloading", true); @@ -378,7 +384,7 @@ public class GunEventHandler { } if (data.getInt("ReloadTime") == 1) { - if (stack.is(ModTags.Items.OPEN_BOLT)) { + if (gunItem.isOpenBolt(stack)) { if (GunsTool.getGunIntTag(stack, "Ammo", 0) == 0) { playGunEmptyReload(player); } else { diff --git a/src/main/java/com/atsuishio/superbwarfare/init/ModTags.java b/src/main/java/com/atsuishio/superbwarfare/init/ModTags.java index 81375a551..8f0b60764 100644 --- a/src/main/java/com/atsuishio/superbwarfare/init/ModTags.java +++ b/src/main/java/com/atsuishio/superbwarfare/init/ModTags.java @@ -29,7 +29,6 @@ public class ModTags { public static final TagKey REVOLVER = tag("revolver"); public static final TagKey NORMAL_GUN = tag("normal_gun"); - public static final TagKey OPEN_BOLT = tag("open_bolt"); public static final TagKey CANNOT_RELOAD = tag("cannot_reload"); public static final TagKey IS_AUTO_WEAPON = tag("is_auto_weapon"); public static final TagKey CAN_CUSTOM_GUN = tag("can_custom_gun"); diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/GunItem.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/GunItem.java index dd75be953..858b5fa77 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/GunItem.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/GunItem.java @@ -232,4 +232,23 @@ public abstract class GunItem extends Item { } stack.addTagElement("PerkData", compound); } + + public boolean isMagazineReload(ItemStack stack) { + return false; + } + + public boolean isClipReload(ItemStack stack) { + return false; + } + + public boolean isIterativeReload(ItemStack stack) { + return false; + } + public int getAmmoCount(ItemStack stack) { + return GunsTool.getGunIntTag(stack, "Ammo", 0); + } + + public boolean isOpenBolt(ItemStack stack) { + return false; + } } diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/handgun/Glock17Item.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/handgun/Glock17Item.java index 9f7a30507..2d4292fa2 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/handgun/Glock17Item.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/handgun/Glock17Item.java @@ -1,17 +1,17 @@ package com.atsuishio.superbwarfare.item.gun.handgun; import com.atsuishio.superbwarfare.ModUtils; +import com.atsuishio.superbwarfare.client.PoseTool; import com.atsuishio.superbwarfare.client.renderer.item.Glock17ItemRenderer; import com.atsuishio.superbwarfare.event.ClientEventHandler; -import com.atsuishio.superbwarfare.item.gun.GunItem; -import com.atsuishio.superbwarfare.perk.Perk; -import com.atsuishio.superbwarfare.perk.PerkHelper; -import com.atsuishio.superbwarfare.tools.GunsTool; -import com.atsuishio.superbwarfare.client.PoseTool; import com.atsuishio.superbwarfare.init.ModItems; import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModTags; import com.atsuishio.superbwarfare.item.AnimatedItem; +import com.atsuishio.superbwarfare.item.gun.GunItem; +import com.atsuishio.superbwarfare.perk.Perk; +import com.atsuishio.superbwarfare.perk.PerkHelper; +import com.atsuishio.superbwarfare.tools.GunsTool; import net.minecraft.client.Minecraft; import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.player.LocalPlayer; @@ -147,4 +147,14 @@ public class Glock17Item extends GunItem implements GeoItem, AnimatedItem { public boolean canApplyPerk(Perk perk) { return PerkHelper.HANDGUN_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk); } + + @Override + public boolean isMagazineReload(ItemStack stack) { + return true; + } + + @Override + public boolean isOpenBolt(ItemStack stack) { + return true; + } } \ No newline at end of file diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/handgun/Glock18Item.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/handgun/Glock18Item.java index 6553514b1..1675d7059 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/handgun/Glock18Item.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/handgun/Glock18Item.java @@ -1,18 +1,18 @@ package com.atsuishio.superbwarfare.item.gun.handgun; import com.atsuishio.superbwarfare.ModUtils; +import com.atsuishio.superbwarfare.client.PoseTool; import com.atsuishio.superbwarfare.client.renderer.item.Glock18ItemRenderer; import com.atsuishio.superbwarfare.event.ClientEventHandler; -import com.atsuishio.superbwarfare.item.gun.GunItem; -import com.atsuishio.superbwarfare.perk.Perk; -import com.atsuishio.superbwarfare.perk.PerkHelper; -import com.atsuishio.superbwarfare.tools.GunsTool; -import com.atsuishio.superbwarfare.client.PoseTool; import com.atsuishio.superbwarfare.init.ModItems; import com.atsuishio.superbwarfare.init.ModPerks; import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModTags; import com.atsuishio.superbwarfare.item.AnimatedItem; +import com.atsuishio.superbwarfare.item.gun.GunItem; +import com.atsuishio.superbwarfare.perk.Perk; +import com.atsuishio.superbwarfare.perk.PerkHelper; +import com.atsuishio.superbwarfare.tools.GunsTool; import net.minecraft.client.Minecraft; import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.player.LocalPlayer; @@ -150,4 +150,14 @@ public class Glock18Item extends GunItem implements GeoItem, AnimatedItem { public boolean canApplyPerk(Perk perk) { return PerkHelper.HANDGUN_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk) || perk == ModPerks.DESPERADO.get(); } + + @Override + public boolean isMagazineReload(ItemStack stack) { + return true; + } + + @Override + public boolean isOpenBolt(ItemStack stack) { + return true; + } } \ No newline at end of file diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/handgun/M1911Item.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/handgun/M1911Item.java index 4e71c65ef..4d5905c62 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/handgun/M1911Item.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/handgun/M1911Item.java @@ -1,17 +1,17 @@ package com.atsuishio.superbwarfare.item.gun.handgun; import com.atsuishio.superbwarfare.ModUtils; +import com.atsuishio.superbwarfare.client.PoseTool; import com.atsuishio.superbwarfare.client.renderer.item.M1911ItemRenderer; import com.atsuishio.superbwarfare.event.ClientEventHandler; -import com.atsuishio.superbwarfare.item.gun.GunItem; -import com.atsuishio.superbwarfare.perk.Perk; -import com.atsuishio.superbwarfare.perk.PerkHelper; -import com.atsuishio.superbwarfare.tools.GunsTool; -import com.atsuishio.superbwarfare.client.PoseTool; import com.atsuishio.superbwarfare.init.ModItems; import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModTags; import com.atsuishio.superbwarfare.item.AnimatedItem; +import com.atsuishio.superbwarfare.item.gun.GunItem; +import com.atsuishio.superbwarfare.perk.Perk; +import com.atsuishio.superbwarfare.perk.PerkHelper; +import com.atsuishio.superbwarfare.tools.GunsTool; import net.minecraft.client.Minecraft; import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.player.LocalPlayer; @@ -138,4 +138,14 @@ public class M1911Item extends GunItem implements GeoItem, AnimatedItem { public boolean canApplyPerk(Perk perk) { return PerkHelper.HANDGUN_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk); } + + @Override + public boolean isMagazineReload(ItemStack stack) { + return true; + } + + @Override + public boolean isOpenBolt(ItemStack stack) { + return true; + } } \ No newline at end of file diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/handgun/Trachelium.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/handgun/Trachelium.java index a89bbba88..669023fb0 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/handgun/Trachelium.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/handgun/Trachelium.java @@ -314,4 +314,8 @@ public class Trachelium extends GunItem implements GeoItem, AnimatedItem { return PerkHelper.HANDGUN_PERKS.test(perk); } + @Override + public boolean isMagazineReload(ItemStack stack) { + return true; + } } \ No newline at end of file diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/launcher/JavelinItem.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/launcher/JavelinItem.java index 89220f0f4..133e2dd7f 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/launcher/JavelinItem.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/launcher/JavelinItem.java @@ -195,4 +195,9 @@ public class JavelinItem extends GunItem implements GeoItem, AnimatedItem { public @NotNull Optional getTooltipImage(@NotNull ItemStack pStack) { return Optional.of(new LauncherImageComponent(pStack)); } + + @Override + public boolean isMagazineReload(ItemStack stack) { + return true; + } } \ No newline at end of file diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/launcher/M79Item.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/launcher/M79Item.java index 4f9e878c4..35a9c698a 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/launcher/M79Item.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/launcher/M79Item.java @@ -175,4 +175,9 @@ public class M79Item extends GunItem implements GeoItem, AnimatedItem { public @NotNull Optional getTooltipImage(@NotNull ItemStack pStack) { return Optional.of(new LauncherImageComponent(pStack)); } + + @Override + public boolean isMagazineReload(ItemStack stack) { + return true; + } } \ No newline at end of file diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/launcher/RpgItem.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/launcher/RpgItem.java index 06c46456f..d2e47668b 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/launcher/RpgItem.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/launcher/RpgItem.java @@ -185,4 +185,9 @@ public class RpgItem extends GunItem implements GeoItem, AnimatedItem { public @NotNull Optional getTooltipImage(@NotNull ItemStack pStack) { return Optional.of(new LauncherImageComponent(pStack)); } + + @Override + public boolean isMagazineReload(ItemStack stack) { + return true; + } } \ No newline at end of file diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/machinegun/DevotionItem.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/machinegun/DevotionItem.java index d31babb77..2379c71d4 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/machinegun/DevotionItem.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/machinegun/DevotionItem.java @@ -134,4 +134,14 @@ public class DevotionItem extends GunItem implements GeoItem, AnimatedItem { public boolean canApplyPerk(Perk perk) { return PerkHelper.MACHINE_GUN_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk) || perk == ModPerks.DESPERADO.get() || perk == ModPerks.TURBO_CHARGER.get(); } + + @Override + public boolean isMagazineReload(ItemStack stack) { + return true; + } + + @Override + public boolean isOpenBolt(ItemStack stack) { + return true; + } } \ No newline at end of file diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/machinegun/M60Item.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/machinegun/M60Item.java index f64932489..f7177bbfb 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/machinegun/M60Item.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/machinegun/M60Item.java @@ -163,4 +163,14 @@ public class M60Item extends GunItem implements GeoItem, AnimatedItem { public boolean canApplyPerk(Perk perk) { return PerkHelper.MACHINE_GUN_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk) || perk == ModPerks.DESPERADO.get(); } + + @Override + public boolean isMagazineReload(ItemStack stack) { + return true; + } + + @Override + public boolean isOpenBolt(ItemStack stack) { + return true; + } } \ No newline at end of file diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/machinegun/RpkItem.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/machinegun/RpkItem.java index fed39779b..9c3e37012 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/machinegun/RpkItem.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/machinegun/RpkItem.java @@ -1,18 +1,18 @@ package com.atsuishio.superbwarfare.item.gun.machinegun; import com.atsuishio.superbwarfare.ModUtils; +import com.atsuishio.superbwarfare.client.PoseTool; import com.atsuishio.superbwarfare.client.renderer.item.RpkItemRenderer; import com.atsuishio.superbwarfare.event.ClientEventHandler; -import com.atsuishio.superbwarfare.item.gun.GunItem; -import com.atsuishio.superbwarfare.perk.Perk; -import com.atsuishio.superbwarfare.perk.PerkHelper; -import com.atsuishio.superbwarfare.tools.GunsTool; import com.atsuishio.superbwarfare.init.ModItems; import com.atsuishio.superbwarfare.init.ModPerks; import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModTags; import com.atsuishio.superbwarfare.item.AnimatedItem; -import com.atsuishio.superbwarfare.client.PoseTool; +import com.atsuishio.superbwarfare.item.gun.GunItem; +import com.atsuishio.superbwarfare.perk.Perk; +import com.atsuishio.superbwarfare.perk.PerkHelper; +import com.atsuishio.superbwarfare.tools.GunsTool; import net.minecraft.client.Minecraft; import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.player.LocalPlayer; @@ -135,4 +135,14 @@ public class RpkItem extends GunItem implements GeoItem, AnimatedItem { public boolean canApplyPerk(Perk perk) { return PerkHelper.MACHINE_GUN_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk) || perk == ModPerks.DESPERADO.get(); } + + @Override + public boolean isMagazineReload(ItemStack stack) { + return true; + } + + @Override + public boolean isOpenBolt(ItemStack stack) { + return true; + } } \ No newline at end of file diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/rifle/AK12Item.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/rifle/AK12Item.java index 363c3f3a3..98467ebe5 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/rifle/AK12Item.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/rifle/AK12Item.java @@ -205,4 +205,8 @@ public class AK12Item extends GunItem implements GeoItem, AnimatedItem { return PerkHelper.RIFLE_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk); } + @Override + public boolean isOpenBolt(ItemStack stack) { + return true; + } } \ No newline at end of file diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/rifle/AK47Item.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/rifle/AK47Item.java index c049fd614..d82b93404 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/rifle/AK47Item.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/rifle/AK47Item.java @@ -214,4 +214,13 @@ public class AK47Item extends GunItem implements GeoItem, AnimatedItem { return PerkHelper.RIFLE_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk); } + @Override + public boolean isMagazineReload(ItemStack stack) { + return true; + } + + @Override + public boolean isOpenBolt(ItemStack stack) { + return true; + } } \ No newline at end of file diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/rifle/Hk416Item.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/rifle/Hk416Item.java index 61020edf3..27e57fd91 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/rifle/Hk416Item.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/rifle/Hk416Item.java @@ -216,4 +216,13 @@ public class Hk416Item extends GunItem implements GeoItem, AnimatedItem { return PerkHelper.RIFLE_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk); } + @Override + public boolean isMagazineReload(ItemStack stack) { + return true; + } + + @Override + public boolean isOpenBolt(ItemStack stack) { + return true; + } } \ No newline at end of file diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/rifle/M4Item.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/rifle/M4Item.java index 8da440bd4..353087661 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/rifle/M4Item.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/rifle/M4Item.java @@ -215,4 +215,13 @@ public class M4Item extends GunItem implements GeoItem, AnimatedItem { return PerkHelper.RIFLE_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk); } + @Override + public boolean isMagazineReload(ItemStack stack) { + return true; + } + + @Override + public boolean isOpenBolt(ItemStack stack) { + return true; + } } \ No newline at end of file diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/rifle/MarlinItem.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/rifle/MarlinItem.java index b5e8ab07c..97d1f2f9a 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/rifle/MarlinItem.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/rifle/MarlinItem.java @@ -1,17 +1,17 @@ package com.atsuishio.superbwarfare.item.gun.rifle; import com.atsuishio.superbwarfare.ModUtils; +import com.atsuishio.superbwarfare.client.PoseTool; import com.atsuishio.superbwarfare.client.renderer.item.MarlinItemRenderer; import com.atsuishio.superbwarfare.event.ClientEventHandler; -import com.atsuishio.superbwarfare.perk.Perk; -import com.atsuishio.superbwarfare.perk.PerkHelper; -import com.atsuishio.superbwarfare.tools.GunsTool; -import com.atsuishio.superbwarfare.client.PoseTool; import com.atsuishio.superbwarfare.init.ModItems; import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModTags; import com.atsuishio.superbwarfare.item.AnimatedItem; import com.atsuishio.superbwarfare.item.gun.GunItem; +import com.atsuishio.superbwarfare.perk.Perk; +import com.atsuishio.superbwarfare.perk.PerkHelper; +import com.atsuishio.superbwarfare.tools.GunsTool; import net.minecraft.client.Minecraft; import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.player.LocalPlayer; @@ -171,4 +171,8 @@ public class MarlinItem extends GunItem implements GeoItem, AnimatedItem { return PerkHelper.RIFLE_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk); } + @Override + public boolean isIterativeReload(ItemStack stack) { + return true; + } } \ No newline at end of file diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/rifle/Mk14Item.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/rifle/Mk14Item.java index 33e6db450..3a9b35334 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/rifle/Mk14Item.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/rifle/Mk14Item.java @@ -214,4 +214,13 @@ public class Mk14Item extends GunItem implements GeoItem, AnimatedItem { return PerkHelper.RIFLE_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk); } + @Override + public boolean isMagazineReload(ItemStack stack) { + return true; + } + + @Override + public boolean isOpenBolt(ItemStack stack) { + return true; + } } \ No newline at end of file diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/rifle/Qbz95Item.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/rifle/Qbz95Item.java index f1ccd57be..dd015c2e2 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/rifle/Qbz95Item.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/rifle/Qbz95Item.java @@ -217,4 +217,13 @@ public class Qbz95Item extends GunItem implements GeoItem, AnimatedItem { return PerkHelper.RIFLE_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk); } + @Override + public boolean isMagazineReload(ItemStack stack) { + return true; + } + + @Override + public boolean isOpenBolt(ItemStack stack) { + return true; + } } \ No newline at end of file diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/rifle/SksItem.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/rifle/SksItem.java index 702e75fd3..75e50e4a8 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/rifle/SksItem.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/rifle/SksItem.java @@ -149,4 +149,13 @@ public class SksItem extends GunItem implements GeoItem, AnimatedItem { return PerkHelper.RIFLE_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk); } + @Override + public boolean isMagazineReload(ItemStack stack) { + return true; + } + + @Override + public boolean isOpenBolt(ItemStack stack) { + return true; + } } \ No newline at end of file diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/shotgun/Aa12Item.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/shotgun/Aa12Item.java index 35900dbd6..d5f33a520 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/shotgun/Aa12Item.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/shotgun/Aa12Item.java @@ -1,20 +1,20 @@ package com.atsuishio.superbwarfare.item.gun.shotgun; import com.atsuishio.superbwarfare.ModUtils; -import com.atsuishio.superbwarfare.client.renderer.item.Aa12ItemRenderer; -import com.atsuishio.superbwarfare.event.ClientEventHandler; -import com.atsuishio.superbwarfare.item.gun.GunItem; -import com.atsuishio.superbwarfare.perk.Perk; -import com.atsuishio.superbwarfare.perk.PerkHelper; -import com.atsuishio.superbwarfare.tools.GunsTool; -import com.atsuishio.superbwarfare.tools.RarityTool; import com.atsuishio.superbwarfare.client.PoseTool; +import com.atsuishio.superbwarfare.client.renderer.item.Aa12ItemRenderer; import com.atsuishio.superbwarfare.client.tooltip.component.ShotgunImageComponent; +import com.atsuishio.superbwarfare.event.ClientEventHandler; import com.atsuishio.superbwarfare.init.ModItems; import com.atsuishio.superbwarfare.init.ModPerks; import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModTags; import com.atsuishio.superbwarfare.item.AnimatedItem; +import com.atsuishio.superbwarfare.item.gun.GunItem; +import com.atsuishio.superbwarfare.perk.Perk; +import com.atsuishio.superbwarfare.perk.PerkHelper; +import com.atsuishio.superbwarfare.tools.GunsTool; +import com.atsuishio.superbwarfare.tools.RarityTool; import net.minecraft.client.Minecraft; import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.player.LocalPlayer; @@ -168,4 +168,13 @@ public class Aa12Item extends GunItem implements GeoItem, AnimatedItem { return Optional.of(new ShotgunImageComponent(pStack)); } + @Override + public boolean isMagazineReload(ItemStack stack) { + return true; + } + + @Override + public boolean isOpenBolt(ItemStack stack) { + return true; + } } \ No newline at end of file diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/shotgun/AbekiriItem.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/shotgun/AbekiriItem.java index b2c382e93..04b278c17 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/shotgun/AbekiriItem.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/shotgun/AbekiriItem.java @@ -1,18 +1,18 @@ package com.atsuishio.superbwarfare.item.gun.shotgun; import com.atsuishio.superbwarfare.ModUtils; -import com.atsuishio.superbwarfare.client.renderer.item.AbekiriItemRenderer; -import com.atsuishio.superbwarfare.event.ClientEventHandler; -import com.atsuishio.superbwarfare.perk.Perk; -import com.atsuishio.superbwarfare.perk.PerkHelper; -import com.atsuishio.superbwarfare.tools.GunsTool; import com.atsuishio.superbwarfare.client.PoseTool; +import com.atsuishio.superbwarfare.client.renderer.item.AbekiriItemRenderer; import com.atsuishio.superbwarfare.client.tooltip.component.ShotgunImageComponent; +import com.atsuishio.superbwarfare.event.ClientEventHandler; import com.atsuishio.superbwarfare.init.ModItems; import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModTags; import com.atsuishio.superbwarfare.item.AnimatedItem; import com.atsuishio.superbwarfare.item.gun.GunItem; +import com.atsuishio.superbwarfare.perk.Perk; +import com.atsuishio.superbwarfare.perk.PerkHelper; +import com.atsuishio.superbwarfare.tools.GunsTool; import net.minecraft.client.Minecraft; import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.player.LocalPlayer; @@ -144,4 +144,13 @@ public class AbekiriItem extends GunItem implements GeoItem, AnimatedItem { return Optional.of(new ShotgunImageComponent(pStack)); } + @Override + public boolean isMagazineReload(ItemStack stack) { + return true; + } + + @Override + public boolean isOpenBolt(ItemStack stack) { + return true; + } } diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/shotgun/M870Item.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/shotgun/M870Item.java index 2df408983..7d0d6926b 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/shotgun/M870Item.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/shotgun/M870Item.java @@ -1,18 +1,18 @@ package com.atsuishio.superbwarfare.item.gun.shotgun; import com.atsuishio.superbwarfare.ModUtils; -import com.atsuishio.superbwarfare.client.renderer.item.M870ItemRenderer; -import com.atsuishio.superbwarfare.event.ClientEventHandler; -import com.atsuishio.superbwarfare.item.gun.GunItem; -import com.atsuishio.superbwarfare.perk.Perk; -import com.atsuishio.superbwarfare.perk.PerkHelper; -import com.atsuishio.superbwarfare.tools.GunsTool; import com.atsuishio.superbwarfare.client.PoseTool; +import com.atsuishio.superbwarfare.client.renderer.item.M870ItemRenderer; import com.atsuishio.superbwarfare.client.tooltip.component.ShotgunImageComponent; +import com.atsuishio.superbwarfare.event.ClientEventHandler; import com.atsuishio.superbwarfare.init.ModItems; import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModTags; import com.atsuishio.superbwarfare.item.AnimatedItem; +import com.atsuishio.superbwarfare.item.gun.GunItem; +import com.atsuishio.superbwarfare.perk.Perk; +import com.atsuishio.superbwarfare.perk.PerkHelper; +import com.atsuishio.superbwarfare.tools.GunsTool; import net.minecraft.client.Minecraft; import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.player.LocalPlayer; @@ -178,4 +178,8 @@ public class M870Item extends GunItem implements GeoItem, AnimatedItem { return Optional.of(new ShotgunImageComponent(pStack)); } + @Override + public boolean isIterativeReload(ItemStack stack) { + return true; + } } \ No newline at end of file diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/smg/VectorItem.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/smg/VectorItem.java index fe3322e2d..cbe593e99 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/smg/VectorItem.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/smg/VectorItem.java @@ -189,4 +189,14 @@ public class VectorItem extends GunItem implements GeoItem, AnimatedItem { public boolean canApplyPerk(Perk perk) { return PerkHelper.SMG_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk); } + + @Override + public boolean isMagazineReload(ItemStack stack) { + return true; + } + + @Override + public boolean isOpenBolt(ItemStack stack) { + return true; + } } \ No newline at end of file diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/HuntingRifleItem.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/HuntingRifleItem.java index 0b538a348..7ea3c772e 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/HuntingRifleItem.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/HuntingRifleItem.java @@ -1,17 +1,17 @@ package com.atsuishio.superbwarfare.item.gun.sniper; import com.atsuishio.superbwarfare.ModUtils; +import com.atsuishio.superbwarfare.client.PoseTool; import com.atsuishio.superbwarfare.client.renderer.item.HuntingRifleItemRenderer; import com.atsuishio.superbwarfare.event.ClientEventHandler; -import com.atsuishio.superbwarfare.perk.Perk; -import com.atsuishio.superbwarfare.perk.PerkHelper; -import com.atsuishio.superbwarfare.tools.GunsTool; import com.atsuishio.superbwarfare.init.ModItems; import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModTags; import com.atsuishio.superbwarfare.item.AnimatedItem; import com.atsuishio.superbwarfare.item.gun.GunItem; -import com.atsuishio.superbwarfare.client.PoseTool; +import com.atsuishio.superbwarfare.perk.Perk; +import com.atsuishio.superbwarfare.perk.PerkHelper; +import com.atsuishio.superbwarfare.tools.GunsTool; import net.minecraft.client.Minecraft; import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.player.LocalPlayer; @@ -129,4 +129,9 @@ public class HuntingRifleItem extends GunItem implements GeoItem, AnimatedItem { public boolean canApplyPerk(Perk perk) { return PerkHelper.SNIPER_RIFLE_PERKS.test(perk); } + + @Override + public boolean isMagazineReload(ItemStack stack) { + return true; + } } \ No newline at end of file diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/K98Item.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/K98Item.java index 4bfdb328e..4d7ed652f 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/K98Item.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/K98Item.java @@ -1,17 +1,17 @@ package com.atsuishio.superbwarfare.item.gun.sniper; import com.atsuishio.superbwarfare.ModUtils; +import com.atsuishio.superbwarfare.client.PoseTool; import com.atsuishio.superbwarfare.client.renderer.item.K98ItemRenderer; import com.atsuishio.superbwarfare.event.ClientEventHandler; -import com.atsuishio.superbwarfare.perk.Perk; -import com.atsuishio.superbwarfare.perk.PerkHelper; -import com.atsuishio.superbwarfare.tools.GunsTool; -import com.atsuishio.superbwarfare.client.PoseTool; import com.atsuishio.superbwarfare.init.ModItems; import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModTags; import com.atsuishio.superbwarfare.item.AnimatedItem; import com.atsuishio.superbwarfare.item.gun.GunItem; +import com.atsuishio.superbwarfare.perk.Perk; +import com.atsuishio.superbwarfare.perk.PerkHelper; +import com.atsuishio.superbwarfare.tools.GunsTool; import net.minecraft.client.Minecraft; import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.player.LocalPlayer; @@ -172,4 +172,14 @@ public class K98Item extends GunItem implements GeoItem, AnimatedItem { public boolean canApplyPerk(Perk perk) { return PerkHelper.SNIPER_RIFLE_PERKS.test(perk); } + + @Override + public boolean isClipReload(ItemStack stack) { + return true; + } + + @Override + public boolean isIterativeReload(ItemStack stack) { + return true; + } } \ No newline at end of file diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/M98bItem.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/M98bItem.java index 094305a17..22f28fffa 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/M98bItem.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/M98bItem.java @@ -1,17 +1,17 @@ package com.atsuishio.superbwarfare.item.gun.sniper; import com.atsuishio.superbwarfare.ModUtils; +import com.atsuishio.superbwarfare.client.PoseTool; import com.atsuishio.superbwarfare.client.renderer.item.M98bItemRenderer; import com.atsuishio.superbwarfare.event.ClientEventHandler; -import com.atsuishio.superbwarfare.item.gun.GunItem; -import com.atsuishio.superbwarfare.perk.Perk; -import com.atsuishio.superbwarfare.perk.PerkHelper; -import com.atsuishio.superbwarfare.tools.GunsTool; import com.atsuishio.superbwarfare.init.ModItems; import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModTags; import com.atsuishio.superbwarfare.item.AnimatedItem; -import com.atsuishio.superbwarfare.client.PoseTool; +import com.atsuishio.superbwarfare.item.gun.GunItem; +import com.atsuishio.superbwarfare.perk.Perk; +import com.atsuishio.superbwarfare.perk.PerkHelper; +import com.atsuishio.superbwarfare.tools.GunsTool; import net.minecraft.client.Minecraft; import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.player.LocalPlayer; @@ -150,4 +150,14 @@ public class M98bItem extends GunItem implements GeoItem, AnimatedItem { public boolean canApplyPerk(Perk perk) { return PerkHelper.SNIPER_RIFLE_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk); } + + @Override + public boolean isMagazineReload(ItemStack stack) { + return true; + } + + @Override + public boolean isOpenBolt(ItemStack stack) { + return true; + } } \ No newline at end of file diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/MosinNagantItem.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/MosinNagantItem.java index d6fb4e7f3..215ded923 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/MosinNagantItem.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/MosinNagantItem.java @@ -172,4 +172,9 @@ public class MosinNagantItem extends GunItem implements GeoItem, AnimatedItem { public boolean canApplyPerk(Perk perk) { return PerkHelper.SNIPER_RIFLE_PERKS.test(perk); } + + @Override + public boolean isIterativeReload(ItemStack stack) { + return true; + } } \ No newline at end of file diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/Ntw20Item.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/Ntw20Item.java index 66a986c7d..ce1a1ff65 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/Ntw20Item.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/Ntw20Item.java @@ -1,18 +1,18 @@ package com.atsuishio.superbwarfare.item.gun.sniper; import com.atsuishio.superbwarfare.ModUtils; +import com.atsuishio.superbwarfare.client.PoseTool; import com.atsuishio.superbwarfare.client.renderer.item.Ntw20Renderer; import com.atsuishio.superbwarfare.event.ClientEventHandler; -import com.atsuishio.superbwarfare.perk.Perk; -import com.atsuishio.superbwarfare.perk.PerkHelper; -import com.atsuishio.superbwarfare.tools.GunsTool; -import com.atsuishio.superbwarfare.tools.RarityTool; -import com.atsuishio.superbwarfare.client.PoseTool; import com.atsuishio.superbwarfare.init.ModItems; import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModTags; import com.atsuishio.superbwarfare.item.AnimatedItem; import com.atsuishio.superbwarfare.item.gun.GunItem; +import com.atsuishio.superbwarfare.perk.Perk; +import com.atsuishio.superbwarfare.perk.PerkHelper; +import com.atsuishio.superbwarfare.tools.GunsTool; +import com.atsuishio.superbwarfare.tools.RarityTool; import net.minecraft.client.Minecraft; import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.player.LocalPlayer; @@ -151,4 +151,14 @@ public class Ntw20Item extends GunItem implements GeoItem, AnimatedItem { public boolean canApplyPerk(Perk perk) { return PerkHelper.SNIPER_RIFLE_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk); } + + @Override + public boolean isMagazineReload(ItemStack stack) { + return true; + } + + @Override + public boolean isOpenBolt(ItemStack stack) { + return true; + } } \ No newline at end of file diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/SentinelItem.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/SentinelItem.java index e595e602a..0a869a9c4 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/SentinelItem.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/SentinelItem.java @@ -234,4 +234,13 @@ public class SentinelItem extends GunItem implements GeoItem, AnimatedItem { return Optional.of(new SentinelImageComponent(pStack)); } + @Override + public boolean isMagazineReload(ItemStack stack) { + return true; + } + + @Override + public boolean isOpenBolt(ItemStack stack) { + return true; + } } \ No newline at end of file diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/SvdItem.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/SvdItem.java index 8999b3432..ee6bd6269 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/SvdItem.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/SvdItem.java @@ -1,17 +1,17 @@ package com.atsuishio.superbwarfare.item.gun.sniper; import com.atsuishio.superbwarfare.ModUtils; +import com.atsuishio.superbwarfare.client.PoseTool; import com.atsuishio.superbwarfare.client.renderer.item.SvdItemRenderer; import com.atsuishio.superbwarfare.event.ClientEventHandler; -import com.atsuishio.superbwarfare.item.gun.GunItem; -import com.atsuishio.superbwarfare.perk.Perk; -import com.atsuishio.superbwarfare.perk.PerkHelper; -import com.atsuishio.superbwarfare.tools.GunsTool; import com.atsuishio.superbwarfare.init.ModItems; import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModTags; import com.atsuishio.superbwarfare.item.AnimatedItem; -import com.atsuishio.superbwarfare.client.PoseTool; +import com.atsuishio.superbwarfare.item.gun.GunItem; +import com.atsuishio.superbwarfare.perk.Perk; +import com.atsuishio.superbwarfare.perk.PerkHelper; +import com.atsuishio.superbwarfare.tools.GunsTool; import net.minecraft.client.Minecraft; import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.player.LocalPlayer; @@ -133,4 +133,14 @@ public class SvdItem extends GunItem implements GeoItem, AnimatedItem { public boolean canApplyPerk(Perk perk) { return PerkHelper.SNIPER_RIFLE_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk); } + + @Override + public boolean isMagazineReload(ItemStack stack) { + return true; + } + + @Override + public boolean isOpenBolt(ItemStack stack) { + return true; + } } \ No newline at end of file diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/special/TaserItem.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/special/TaserItem.java index 5a655c9af..0df7dcb35 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/special/TaserItem.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/special/TaserItem.java @@ -259,4 +259,8 @@ public class TaserItem extends GunItem implements GeoItem, AnimatedItem { return Optional.of(new EnergyImageComponent(pStack)); } + @Override + public boolean isMagazineReload(ItemStack stack) { + return true; + } } diff --git a/src/main/java/com/atsuishio/superbwarfare/network/message/ReloadMessage.java b/src/main/java/com/atsuishio/superbwarfare/network/message/ReloadMessage.java index 533f73814..27616be8f 100644 --- a/src/main/java/com/atsuishio/superbwarfare/network/message/ReloadMessage.java +++ b/src/main/java/com/atsuishio/superbwarfare/network/message/ReloadMessage.java @@ -2,6 +2,7 @@ package com.atsuishio.superbwarfare.network.message; import com.atsuishio.superbwarfare.init.ModItems; import com.atsuishio.superbwarfare.init.ModTags; +import com.atsuishio.superbwarfare.item.gun.GunItem; import com.atsuishio.superbwarfare.network.ModVariables; import com.atsuishio.superbwarfare.tools.GunsTool; import net.minecraft.nbt.CompoundTag; @@ -55,18 +56,16 @@ public class ReloadMessage { var capability = player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables()); if (!player.isSpectator() - && stack.is(ModTags.Items.GUN) + && stack.getItem() instanceof GunItem gunItem && !stack.getOrCreateTag().getBoolean("sentinel_is_charging") - && !(player.getCooldowns().isOnCooldown(stack.getItem())) && GunsTool.getGunIntTag(stack, "ReloadTime") == 0 && stack.getOrCreateTag().getInt("bolt_action_anim") == 0 ) { CompoundTag tag = stack.getOrCreateTag(); - boolean canSingleReload = GunsTool.getGunIntTag(stack, "IterativeTime", 0) != 0; - boolean canReload = (GunsTool.getGunIntTag(stack, "NormalReloadTime") != 0 || GunsTool.getGunIntTag(stack, "EmptyReloadTime") != 0) - && GunsTool.getGunIntTag(stack, "ClipLoad", 0) != 1; - boolean clipLoad = GunsTool.getGunIntTag(stack, "Ammo", 0) == 0 && GunsTool.getGunIntTag(stack, "ClipLoad", 0) == 1; + boolean canSingleReload = gunItem.isIterativeReload(stack); + boolean canReload = gunItem.isMagazineReload(stack) && !gunItem.isClipReload(stack); + boolean clipLoad = gunItem.getAmmoCount(stack) == 0 && gunItem.isClipReload(stack); // 检查备弹 int count = 0; @@ -97,9 +96,9 @@ public class ReloadMessage { } if (canReload || clipLoad) { - int magazine = GunsTool.getGunIntTag(stack, "Magazine", 0); + int magazine = gunItem.getAmmoCount(stack); - if (stack.is(ModTags.Items.OPEN_BOLT)) { + if (gunItem.isOpenBolt(stack)) { if (stack.is(ModTags.Items.EXTRA_ONE_AMMO)) { if (GunsTool.getGunIntTag(stack, "Ammo", 0) < magazine + tag.getInt("customMag") + 1) { tag.putBoolean("start_reload", true); diff --git a/src/main/resources/data/superbwarfare/guns/k_98.json b/src/main/resources/data/superbwarfare/guns/k_98.json index ce71a4b68..98bd19225 100644 --- a/src/main/resources/data/superbwarfare/guns/k_98.json +++ b/src/main/resources/data/superbwarfare/guns/k_98.json @@ -11,7 +11,6 @@ "FireMode": 0, "Semi": 1, "EmptyReloadTime": 59, - "ClipLoad": 1, "PrepareTime": 29, "IterativeTime": 11, "FinishTime": 18,