准备重写换弹

This commit is contained in:
Atsuihsio 2024-12-30 13:32:32 +08:00
parent 2e0a5d4aff
commit ca7c919e43
36 changed files with 335 additions and 81 deletions

View file

@ -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.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()); 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_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(), 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(),

View file

@ -8,6 +8,7 @@ import com.atsuishio.superbwarfare.init.ModItems;
import com.atsuishio.superbwarfare.init.ModPerks; import com.atsuishio.superbwarfare.init.ModPerks;
import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.init.ModTags; import com.atsuishio.superbwarfare.init.ModTags;
import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.network.ModVariables; import com.atsuishio.superbwarfare.network.ModVariables;
import com.atsuishio.superbwarfare.perk.AmmoPerk; import com.atsuishio.superbwarfare.perk.AmmoPerk;
import com.atsuishio.superbwarfare.perk.Perk; import com.atsuishio.superbwarfare.perk.Perk;
@ -311,12 +312,17 @@ public class GunEventHandler {
*/ */
private static void handleGunReload(Player player) { private static void handleGunReload(Player player) {
ItemStack stack = player.getMainHandItem(); ItemStack stack = player.getMainHandItem();
GunItem gunItem = null;
if (stack.getItem() instanceof GunItem gunItem1) {
gunItem = gunItem1;
}
if (gunItem == null) return;
CompoundTag tag = stack.getOrCreateTag(); CompoundTag tag = stack.getOrCreateTag();
CompoundTag data = stack.getOrCreateTag().getCompound("GunData"); CompoundTag data = stack.getOrCreateTag().getCompound("GunData");
// 启动换弹 // 启动换弹
if (tag.getBoolean("start_reload")) { if (tag.getBoolean("start_reload")) {
MinecraftForge.EVENT_BUS.post(new ReloadEvent.Pre(player, stack)); 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) { if (GunsTool.getGunIntTag(stack, "Ammo", 0) == 0) {
data.putInt("ReloadTime", data.getInt("EmptyReloadTime") + 1); data.putInt("ReloadTime", data.getInt("EmptyReloadTime") + 1);
stack.getOrCreateTag().putBoolean("is_empty_reloading", true); stack.getOrCreateTag().putBoolean("is_empty_reloading", true);
@ -378,7 +384,7 @@ public class GunEventHandler {
} }
if (data.getInt("ReloadTime") == 1) { if (data.getInt("ReloadTime") == 1) {
if (stack.is(ModTags.Items.OPEN_BOLT)) { if (gunItem.isOpenBolt(stack)) {
if (GunsTool.getGunIntTag(stack, "Ammo", 0) == 0) { if (GunsTool.getGunIntTag(stack, "Ammo", 0) == 0) {
playGunEmptyReload(player); playGunEmptyReload(player);
} else { } else {

View file

@ -29,7 +29,6 @@ public class ModTags {
public static final TagKey<Item> REVOLVER = tag("revolver"); public static final TagKey<Item> REVOLVER = tag("revolver");
public static final TagKey<Item> NORMAL_GUN = tag("normal_gun"); public static final TagKey<Item> NORMAL_GUN = tag("normal_gun");
public static final TagKey<Item> OPEN_BOLT = tag("open_bolt");
public static final TagKey<Item> CANNOT_RELOAD = tag("cannot_reload"); public static final TagKey<Item> CANNOT_RELOAD = tag("cannot_reload");
public static final TagKey<Item> IS_AUTO_WEAPON = tag("is_auto_weapon"); public static final TagKey<Item> IS_AUTO_WEAPON = tag("is_auto_weapon");
public static final TagKey<Item> CAN_CUSTOM_GUN = tag("can_custom_gun"); public static final TagKey<Item> CAN_CUSTOM_GUN = tag("can_custom_gun");

View file

@ -232,4 +232,23 @@ public abstract class GunItem extends Item {
} }
stack.addTagElement("PerkData", compound); 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;
}
} }

View file

@ -1,17 +1,17 @@
package com.atsuishio.superbwarfare.item.gun.handgun; package com.atsuishio.superbwarfare.item.gun.handgun;
import com.atsuishio.superbwarfare.ModUtils; import com.atsuishio.superbwarfare.ModUtils;
import com.atsuishio.superbwarfare.client.PoseTool;
import com.atsuishio.superbwarfare.client.renderer.item.Glock17ItemRenderer; import com.atsuishio.superbwarfare.client.renderer.item.Glock17ItemRenderer;
import com.atsuishio.superbwarfare.event.ClientEventHandler; 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.ModItems;
import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.init.ModTags; import com.atsuishio.superbwarfare.init.ModTags;
import com.atsuishio.superbwarfare.item.AnimatedItem; 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.Minecraft;
import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.model.HumanoidModel;
import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.player.LocalPlayer;
@ -147,4 +147,14 @@ public class Glock17Item extends GunItem implements GeoItem, AnimatedItem {
public boolean canApplyPerk(Perk perk) { public boolean canApplyPerk(Perk perk) {
return PerkHelper.HANDGUN_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(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;
}
} }

View file

@ -1,18 +1,18 @@
package com.atsuishio.superbwarfare.item.gun.handgun; package com.atsuishio.superbwarfare.item.gun.handgun;
import com.atsuishio.superbwarfare.ModUtils; import com.atsuishio.superbwarfare.ModUtils;
import com.atsuishio.superbwarfare.client.PoseTool;
import com.atsuishio.superbwarfare.client.renderer.item.Glock18ItemRenderer; import com.atsuishio.superbwarfare.client.renderer.item.Glock18ItemRenderer;
import com.atsuishio.superbwarfare.event.ClientEventHandler; 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.ModItems;
import com.atsuishio.superbwarfare.init.ModPerks; import com.atsuishio.superbwarfare.init.ModPerks;
import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.init.ModTags; import com.atsuishio.superbwarfare.init.ModTags;
import com.atsuishio.superbwarfare.item.AnimatedItem; 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.Minecraft;
import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.model.HumanoidModel;
import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.player.LocalPlayer;
@ -150,4 +150,14 @@ public class Glock18Item extends GunItem implements GeoItem, AnimatedItem {
public boolean canApplyPerk(Perk perk) { public boolean canApplyPerk(Perk perk) {
return PerkHelper.HANDGUN_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk) || perk == ModPerks.DESPERADO.get(); 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;
}
} }

View file

@ -1,17 +1,17 @@
package com.atsuishio.superbwarfare.item.gun.handgun; package com.atsuishio.superbwarfare.item.gun.handgun;
import com.atsuishio.superbwarfare.ModUtils; import com.atsuishio.superbwarfare.ModUtils;
import com.atsuishio.superbwarfare.client.PoseTool;
import com.atsuishio.superbwarfare.client.renderer.item.M1911ItemRenderer; import com.atsuishio.superbwarfare.client.renderer.item.M1911ItemRenderer;
import com.atsuishio.superbwarfare.event.ClientEventHandler; 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.ModItems;
import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.init.ModTags; import com.atsuishio.superbwarfare.init.ModTags;
import com.atsuishio.superbwarfare.item.AnimatedItem; 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.Minecraft;
import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.model.HumanoidModel;
import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.player.LocalPlayer;
@ -138,4 +138,14 @@ public class M1911Item extends GunItem implements GeoItem, AnimatedItem {
public boolean canApplyPerk(Perk perk) { public boolean canApplyPerk(Perk perk) {
return PerkHelper.HANDGUN_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(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;
}
} }

View file

@ -314,4 +314,8 @@ public class Trachelium extends GunItem implements GeoItem, AnimatedItem {
return PerkHelper.HANDGUN_PERKS.test(perk); return PerkHelper.HANDGUN_PERKS.test(perk);
} }
@Override
public boolean isMagazineReload(ItemStack stack) {
return true;
}
} }

View file

@ -195,4 +195,9 @@ public class JavelinItem extends GunItem implements GeoItem, AnimatedItem {
public @NotNull Optional<TooltipComponent> getTooltipImage(@NotNull ItemStack pStack) { public @NotNull Optional<TooltipComponent> getTooltipImage(@NotNull ItemStack pStack) {
return Optional.of(new LauncherImageComponent(pStack)); return Optional.of(new LauncherImageComponent(pStack));
} }
@Override
public boolean isMagazineReload(ItemStack stack) {
return true;
}
} }

View file

@ -175,4 +175,9 @@ public class M79Item extends GunItem implements GeoItem, AnimatedItem {
public @NotNull Optional<TooltipComponent> getTooltipImage(@NotNull ItemStack pStack) { public @NotNull Optional<TooltipComponent> getTooltipImage(@NotNull ItemStack pStack) {
return Optional.of(new LauncherImageComponent(pStack)); return Optional.of(new LauncherImageComponent(pStack));
} }
@Override
public boolean isMagazineReload(ItemStack stack) {
return true;
}
} }

View file

@ -185,4 +185,9 @@ public class RpgItem extends GunItem implements GeoItem, AnimatedItem {
public @NotNull Optional<TooltipComponent> getTooltipImage(@NotNull ItemStack pStack) { public @NotNull Optional<TooltipComponent> getTooltipImage(@NotNull ItemStack pStack) {
return Optional.of(new LauncherImageComponent(pStack)); return Optional.of(new LauncherImageComponent(pStack));
} }
@Override
public boolean isMagazineReload(ItemStack stack) {
return true;
}
} }

View file

@ -134,4 +134,14 @@ public class DevotionItem extends GunItem implements GeoItem, AnimatedItem {
public boolean canApplyPerk(Perk perk) { 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(); 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;
}
} }

View file

@ -163,4 +163,14 @@ public class M60Item extends GunItem implements GeoItem, AnimatedItem {
public boolean canApplyPerk(Perk perk) { public boolean canApplyPerk(Perk perk) {
return PerkHelper.MACHINE_GUN_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk) || perk == ModPerks.DESPERADO.get(); 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;
}
} }

View file

@ -1,18 +1,18 @@
package com.atsuishio.superbwarfare.item.gun.machinegun; package com.atsuishio.superbwarfare.item.gun.machinegun;
import com.atsuishio.superbwarfare.ModUtils; import com.atsuishio.superbwarfare.ModUtils;
import com.atsuishio.superbwarfare.client.PoseTool;
import com.atsuishio.superbwarfare.client.renderer.item.RpkItemRenderer; import com.atsuishio.superbwarfare.client.renderer.item.RpkItemRenderer;
import com.atsuishio.superbwarfare.event.ClientEventHandler; 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.ModItems;
import com.atsuishio.superbwarfare.init.ModPerks; import com.atsuishio.superbwarfare.init.ModPerks;
import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.init.ModTags; import com.atsuishio.superbwarfare.init.ModTags;
import com.atsuishio.superbwarfare.item.AnimatedItem; 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.Minecraft;
import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.model.HumanoidModel;
import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.player.LocalPlayer;
@ -135,4 +135,14 @@ public class RpkItem extends GunItem implements GeoItem, AnimatedItem {
public boolean canApplyPerk(Perk perk) { public boolean canApplyPerk(Perk perk) {
return PerkHelper.MACHINE_GUN_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk) || perk == ModPerks.DESPERADO.get(); 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;
}
} }

View file

@ -205,4 +205,8 @@ public class AK12Item extends GunItem implements GeoItem, AnimatedItem {
return PerkHelper.RIFLE_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk); return PerkHelper.RIFLE_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk);
} }
@Override
public boolean isOpenBolt(ItemStack stack) {
return true;
}
} }

View file

@ -214,4 +214,13 @@ public class AK47Item extends GunItem implements GeoItem, AnimatedItem {
return PerkHelper.RIFLE_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk); 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;
}
} }

View file

@ -216,4 +216,13 @@ public class Hk416Item extends GunItem implements GeoItem, AnimatedItem {
return PerkHelper.RIFLE_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk); 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;
}
} }

View file

@ -215,4 +215,13 @@ public class M4Item extends GunItem implements GeoItem, AnimatedItem {
return PerkHelper.RIFLE_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk); 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;
}
} }

View file

@ -1,17 +1,17 @@
package com.atsuishio.superbwarfare.item.gun.rifle; package com.atsuishio.superbwarfare.item.gun.rifle;
import com.atsuishio.superbwarfare.ModUtils; import com.atsuishio.superbwarfare.ModUtils;
import com.atsuishio.superbwarfare.client.PoseTool;
import com.atsuishio.superbwarfare.client.renderer.item.MarlinItemRenderer; import com.atsuishio.superbwarfare.client.renderer.item.MarlinItemRenderer;
import com.atsuishio.superbwarfare.event.ClientEventHandler; 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.ModItems;
import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.init.ModTags; import com.atsuishio.superbwarfare.init.ModTags;
import com.atsuishio.superbwarfare.item.AnimatedItem; import com.atsuishio.superbwarfare.item.AnimatedItem;
import com.atsuishio.superbwarfare.item.gun.GunItem; 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.Minecraft;
import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.model.HumanoidModel;
import net.minecraft.client.player.LocalPlayer; 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); return PerkHelper.RIFLE_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk);
} }
@Override
public boolean isIterativeReload(ItemStack stack) {
return true;
}
} }

View file

@ -214,4 +214,13 @@ public class Mk14Item extends GunItem implements GeoItem, AnimatedItem {
return PerkHelper.RIFLE_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk); 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;
}
} }

View file

@ -217,4 +217,13 @@ public class Qbz95Item extends GunItem implements GeoItem, AnimatedItem {
return PerkHelper.RIFLE_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk); 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;
}
} }

View file

@ -149,4 +149,13 @@ public class SksItem extends GunItem implements GeoItem, AnimatedItem {
return PerkHelper.RIFLE_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk); 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;
}
} }

View file

@ -1,20 +1,20 @@
package com.atsuishio.superbwarfare.item.gun.shotgun; package com.atsuishio.superbwarfare.item.gun.shotgun;
import com.atsuishio.superbwarfare.ModUtils; 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.PoseTool;
import com.atsuishio.superbwarfare.client.renderer.item.Aa12ItemRenderer;
import com.atsuishio.superbwarfare.client.tooltip.component.ShotgunImageComponent; 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.ModItems;
import com.atsuishio.superbwarfare.init.ModPerks; import com.atsuishio.superbwarfare.init.ModPerks;
import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.init.ModTags; import com.atsuishio.superbwarfare.init.ModTags;
import com.atsuishio.superbwarfare.item.AnimatedItem; 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.Minecraft;
import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.model.HumanoidModel;
import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.player.LocalPlayer;
@ -168,4 +168,13 @@ public class Aa12Item extends GunItem implements GeoItem, AnimatedItem {
return Optional.of(new ShotgunImageComponent(pStack)); return Optional.of(new ShotgunImageComponent(pStack));
} }
@Override
public boolean isMagazineReload(ItemStack stack) {
return true;
}
@Override
public boolean isOpenBolt(ItemStack stack) {
return true;
}
} }

View file

@ -1,18 +1,18 @@
package com.atsuishio.superbwarfare.item.gun.shotgun; package com.atsuishio.superbwarfare.item.gun.shotgun;
import com.atsuishio.superbwarfare.ModUtils; 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.PoseTool;
import com.atsuishio.superbwarfare.client.renderer.item.AbekiriItemRenderer;
import com.atsuishio.superbwarfare.client.tooltip.component.ShotgunImageComponent; 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.ModItems;
import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.init.ModTags; import com.atsuishio.superbwarfare.init.ModTags;
import com.atsuishio.superbwarfare.item.AnimatedItem; import com.atsuishio.superbwarfare.item.AnimatedItem;
import com.atsuishio.superbwarfare.item.gun.GunItem; 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.Minecraft;
import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.model.HumanoidModel;
import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.player.LocalPlayer;
@ -144,4 +144,13 @@ public class AbekiriItem extends GunItem implements GeoItem, AnimatedItem {
return Optional.of(new ShotgunImageComponent(pStack)); return Optional.of(new ShotgunImageComponent(pStack));
} }
@Override
public boolean isMagazineReload(ItemStack stack) {
return true;
}
@Override
public boolean isOpenBolt(ItemStack stack) {
return true;
}
} }

View file

@ -1,18 +1,18 @@
package com.atsuishio.superbwarfare.item.gun.shotgun; package com.atsuishio.superbwarfare.item.gun.shotgun;
import com.atsuishio.superbwarfare.ModUtils; 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.PoseTool;
import com.atsuishio.superbwarfare.client.renderer.item.M870ItemRenderer;
import com.atsuishio.superbwarfare.client.tooltip.component.ShotgunImageComponent; 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.ModItems;
import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.init.ModTags; import com.atsuishio.superbwarfare.init.ModTags;
import com.atsuishio.superbwarfare.item.AnimatedItem; 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.Minecraft;
import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.model.HumanoidModel;
import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.player.LocalPlayer;
@ -178,4 +178,8 @@ public class M870Item extends GunItem implements GeoItem, AnimatedItem {
return Optional.of(new ShotgunImageComponent(pStack)); return Optional.of(new ShotgunImageComponent(pStack));
} }
@Override
public boolean isIterativeReload(ItemStack stack) {
return true;
}
} }

View file

@ -189,4 +189,14 @@ public class VectorItem extends GunItem implements GeoItem, AnimatedItem {
public boolean canApplyPerk(Perk perk) { public boolean canApplyPerk(Perk perk) {
return PerkHelper.SMG_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(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;
}
} }

View file

@ -1,17 +1,17 @@
package com.atsuishio.superbwarfare.item.gun.sniper; package com.atsuishio.superbwarfare.item.gun.sniper;
import com.atsuishio.superbwarfare.ModUtils; import com.atsuishio.superbwarfare.ModUtils;
import com.atsuishio.superbwarfare.client.PoseTool;
import com.atsuishio.superbwarfare.client.renderer.item.HuntingRifleItemRenderer; import com.atsuishio.superbwarfare.client.renderer.item.HuntingRifleItemRenderer;
import com.atsuishio.superbwarfare.event.ClientEventHandler; 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.ModItems;
import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.init.ModTags; import com.atsuishio.superbwarfare.init.ModTags;
import com.atsuishio.superbwarfare.item.AnimatedItem; import com.atsuishio.superbwarfare.item.AnimatedItem;
import com.atsuishio.superbwarfare.item.gun.GunItem; 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.Minecraft;
import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.model.HumanoidModel;
import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.player.LocalPlayer;
@ -129,4 +129,9 @@ public class HuntingRifleItem extends GunItem implements GeoItem, AnimatedItem {
public boolean canApplyPerk(Perk perk) { public boolean canApplyPerk(Perk perk) {
return PerkHelper.SNIPER_RIFLE_PERKS.test(perk); return PerkHelper.SNIPER_RIFLE_PERKS.test(perk);
} }
@Override
public boolean isMagazineReload(ItemStack stack) {
return true;
}
} }

View file

@ -1,17 +1,17 @@
package com.atsuishio.superbwarfare.item.gun.sniper; package com.atsuishio.superbwarfare.item.gun.sniper;
import com.atsuishio.superbwarfare.ModUtils; import com.atsuishio.superbwarfare.ModUtils;
import com.atsuishio.superbwarfare.client.PoseTool;
import com.atsuishio.superbwarfare.client.renderer.item.K98ItemRenderer; import com.atsuishio.superbwarfare.client.renderer.item.K98ItemRenderer;
import com.atsuishio.superbwarfare.event.ClientEventHandler; 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.ModItems;
import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.init.ModTags; import com.atsuishio.superbwarfare.init.ModTags;
import com.atsuishio.superbwarfare.item.AnimatedItem; import com.atsuishio.superbwarfare.item.AnimatedItem;
import com.atsuishio.superbwarfare.item.gun.GunItem; 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.Minecraft;
import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.model.HumanoidModel;
import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.player.LocalPlayer;
@ -172,4 +172,14 @@ public class K98Item extends GunItem implements GeoItem, AnimatedItem {
public boolean canApplyPerk(Perk perk) { public boolean canApplyPerk(Perk perk) {
return PerkHelper.SNIPER_RIFLE_PERKS.test(perk); return PerkHelper.SNIPER_RIFLE_PERKS.test(perk);
} }
@Override
public boolean isClipReload(ItemStack stack) {
return true;
}
@Override
public boolean isIterativeReload(ItemStack stack) {
return true;
}
} }

View file

@ -1,17 +1,17 @@
package com.atsuishio.superbwarfare.item.gun.sniper; package com.atsuishio.superbwarfare.item.gun.sniper;
import com.atsuishio.superbwarfare.ModUtils; import com.atsuishio.superbwarfare.ModUtils;
import com.atsuishio.superbwarfare.client.PoseTool;
import com.atsuishio.superbwarfare.client.renderer.item.M98bItemRenderer; import com.atsuishio.superbwarfare.client.renderer.item.M98bItemRenderer;
import com.atsuishio.superbwarfare.event.ClientEventHandler; 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.ModItems;
import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.init.ModTags; import com.atsuishio.superbwarfare.init.ModTags;
import com.atsuishio.superbwarfare.item.AnimatedItem; 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.Minecraft;
import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.model.HumanoidModel;
import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.player.LocalPlayer;
@ -150,4 +150,14 @@ public class M98bItem extends GunItem implements GeoItem, AnimatedItem {
public boolean canApplyPerk(Perk perk) { public boolean canApplyPerk(Perk perk) {
return PerkHelper.SNIPER_RIFLE_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(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;
}
} }

View file

@ -172,4 +172,9 @@ public class MosinNagantItem extends GunItem implements GeoItem, AnimatedItem {
public boolean canApplyPerk(Perk perk) { public boolean canApplyPerk(Perk perk) {
return PerkHelper.SNIPER_RIFLE_PERKS.test(perk); return PerkHelper.SNIPER_RIFLE_PERKS.test(perk);
} }
@Override
public boolean isIterativeReload(ItemStack stack) {
return true;
}
} }

View file

@ -1,18 +1,18 @@
package com.atsuishio.superbwarfare.item.gun.sniper; package com.atsuishio.superbwarfare.item.gun.sniper;
import com.atsuishio.superbwarfare.ModUtils; import com.atsuishio.superbwarfare.ModUtils;
import com.atsuishio.superbwarfare.client.PoseTool;
import com.atsuishio.superbwarfare.client.renderer.item.Ntw20Renderer; import com.atsuishio.superbwarfare.client.renderer.item.Ntw20Renderer;
import com.atsuishio.superbwarfare.event.ClientEventHandler; 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.ModItems;
import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.init.ModTags; import com.atsuishio.superbwarfare.init.ModTags;
import com.atsuishio.superbwarfare.item.AnimatedItem; import com.atsuishio.superbwarfare.item.AnimatedItem;
import com.atsuishio.superbwarfare.item.gun.GunItem; 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.Minecraft;
import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.model.HumanoidModel;
import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.player.LocalPlayer;
@ -151,4 +151,14 @@ public class Ntw20Item extends GunItem implements GeoItem, AnimatedItem {
public boolean canApplyPerk(Perk perk) { public boolean canApplyPerk(Perk perk) {
return PerkHelper.SNIPER_RIFLE_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(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;
}
} }

View file

@ -234,4 +234,13 @@ public class SentinelItem extends GunItem implements GeoItem, AnimatedItem {
return Optional.of(new SentinelImageComponent(pStack)); return Optional.of(new SentinelImageComponent(pStack));
} }
@Override
public boolean isMagazineReload(ItemStack stack) {
return true;
}
@Override
public boolean isOpenBolt(ItemStack stack) {
return true;
}
} }

View file

@ -1,17 +1,17 @@
package com.atsuishio.superbwarfare.item.gun.sniper; package com.atsuishio.superbwarfare.item.gun.sniper;
import com.atsuishio.superbwarfare.ModUtils; import com.atsuishio.superbwarfare.ModUtils;
import com.atsuishio.superbwarfare.client.PoseTool;
import com.atsuishio.superbwarfare.client.renderer.item.SvdItemRenderer; import com.atsuishio.superbwarfare.client.renderer.item.SvdItemRenderer;
import com.atsuishio.superbwarfare.event.ClientEventHandler; 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.ModItems;
import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.init.ModTags; import com.atsuishio.superbwarfare.init.ModTags;
import com.atsuishio.superbwarfare.item.AnimatedItem; 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.Minecraft;
import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.model.HumanoidModel;
import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.player.LocalPlayer;
@ -133,4 +133,14 @@ public class SvdItem extends GunItem implements GeoItem, AnimatedItem {
public boolean canApplyPerk(Perk perk) { public boolean canApplyPerk(Perk perk) {
return PerkHelper.SNIPER_RIFLE_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(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;
}
} }

View file

@ -259,4 +259,8 @@ public class TaserItem extends GunItem implements GeoItem, AnimatedItem {
return Optional.of(new EnergyImageComponent(pStack)); return Optional.of(new EnergyImageComponent(pStack));
} }
@Override
public boolean isMagazineReload(ItemStack stack) {
return true;
}
} }

View file

@ -2,6 +2,7 @@ package com.atsuishio.superbwarfare.network.message;
import com.atsuishio.superbwarfare.init.ModItems; import com.atsuishio.superbwarfare.init.ModItems;
import com.atsuishio.superbwarfare.init.ModTags; import com.atsuishio.superbwarfare.init.ModTags;
import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.network.ModVariables; import com.atsuishio.superbwarfare.network.ModVariables;
import com.atsuishio.superbwarfare.tools.GunsTool; import com.atsuishio.superbwarfare.tools.GunsTool;
import net.minecraft.nbt.CompoundTag; 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()); var capability = player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables());
if (!player.isSpectator() if (!player.isSpectator()
&& stack.is(ModTags.Items.GUN) && stack.getItem() instanceof GunItem gunItem
&& !stack.getOrCreateTag().getBoolean("sentinel_is_charging") && !stack.getOrCreateTag().getBoolean("sentinel_is_charging")
&& !(player.getCooldowns().isOnCooldown(stack.getItem()))
&& GunsTool.getGunIntTag(stack, "ReloadTime") == 0 && GunsTool.getGunIntTag(stack, "ReloadTime") == 0
&& stack.getOrCreateTag().getInt("bolt_action_anim") == 0 && stack.getOrCreateTag().getInt("bolt_action_anim") == 0
) { ) {
CompoundTag tag = stack.getOrCreateTag(); CompoundTag tag = stack.getOrCreateTag();
boolean canSingleReload = GunsTool.getGunIntTag(stack, "IterativeTime", 0) != 0; boolean canSingleReload = gunItem.isIterativeReload(stack);
boolean canReload = (GunsTool.getGunIntTag(stack, "NormalReloadTime") != 0 || GunsTool.getGunIntTag(stack, "EmptyReloadTime") != 0) boolean canReload = gunItem.isMagazineReload(stack) && !gunItem.isClipReload(stack);
&& GunsTool.getGunIntTag(stack, "ClipLoad", 0) != 1; boolean clipLoad = gunItem.getAmmoCount(stack) == 0 && gunItem.isClipReload(stack);
boolean clipLoad = GunsTool.getGunIntTag(stack, "Ammo", 0) == 0 && GunsTool.getGunIntTag(stack, "ClipLoad", 0) == 1;
// 检查备弹 // 检查备弹
int count = 0; int count = 0;
@ -97,9 +96,9 @@ public class ReloadMessage {
} }
if (canReload || clipLoad) { 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 (stack.is(ModTags.Items.EXTRA_ONE_AMMO)) {
if (GunsTool.getGunIntTag(stack, "Ammo", 0) < magazine + tag.getInt("customMag") + 1) { if (GunsTool.getGunIntTag(stack, "Ammo", 0) < magazine + tag.getInt("customMag") + 1) {
tag.putBoolean("start_reload", true); tag.putBoolean("start_reload", true);

View file

@ -11,7 +11,6 @@
"FireMode": 0, "FireMode": 0,
"Semi": 1, "Semi": 1,
"EmptyReloadTime": 59, "EmptyReloadTime": 59,
"ClipLoad": 1,
"PrepareTime": 29, "PrepareTime": 29,
"IterativeTime": 11, "IterativeTime": 11,
"FinishTime": 18, "FinishTime": 18,