提取换弹模式
This commit is contained in:
parent
e0969c6c9b
commit
4286f907e7
47 changed files with 46 additions and 282 deletions
|
@ -5,6 +5,7 @@ import com.atsuishio.superbwarfare.init.ModKeyMappings;
|
|||
import com.atsuishio.superbwarfare.init.ModPerks;
|
||||
import com.atsuishio.superbwarfare.init.ModTags;
|
||||
import com.atsuishio.superbwarfare.item.gun.GunItem;
|
||||
import com.atsuishio.superbwarfare.item.gun.data.FireMode;
|
||||
import com.atsuishio.superbwarfare.item.gun.data.GunData;
|
||||
import com.atsuishio.superbwarfare.perk.AmmoPerk;
|
||||
import com.atsuishio.superbwarfare.perk.Perk;
|
||||
|
@ -113,7 +114,7 @@ public class ClientGunImageTooltip implements ClientTooltipComponent {
|
|||
* 获取武器射速的文本组件
|
||||
*/
|
||||
protected Component getRpmComponent() {
|
||||
if (this.stack.getItem() instanceof GunItem gunItem && gunItem.isAutoWeapon(this.stack)) {
|
||||
if (this.stack.getItem() instanceof GunItem && GunData.from(this.stack).getAvailableFireModes().contains(FireMode.AUTO)) {
|
||||
return Component.translatable("des.superbwarfare.guns.rpm").withStyle(ChatFormatting.GRAY)
|
||||
.append(Component.literal("").withStyle(ChatFormatting.RESET))
|
||||
.append(Component.literal(FormatTool.format0D(data.rpm()))
|
||||
|
|
|
@ -197,33 +197,6 @@ public abstract class GunItem extends Item implements CustomRendererItem {
|
|||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否使用弹匣换弹
|
||||
*
|
||||
* @param stack 武器物品
|
||||
*/
|
||||
public boolean isMagazineReload(ItemStack stack) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否使用弹夹换弹
|
||||
*
|
||||
* @param stack 武器物品
|
||||
*/
|
||||
public boolean isClipReload(ItemStack stack) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否是单发装填换弹
|
||||
*
|
||||
* @param stack 武器物品
|
||||
*/
|
||||
public boolean isIterativeReload(ItemStack stack) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 开膛待击
|
||||
*
|
||||
|
@ -242,15 +215,6 @@ public abstract class GunItem extends Item implements CustomRendererItem {
|
|||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 武器是否为全自动武器
|
||||
*
|
||||
* @param stack 武器物品
|
||||
*/
|
||||
public boolean isAutoWeapon(ItemStack stack) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 武器是否能进行改装
|
||||
*
|
||||
|
|
|
@ -39,6 +39,9 @@ public class DefaultGunData {
|
|||
@SerializedName("AvailableFireModes")
|
||||
public Set<FireMode> availableFireModes = Set.of(FireMode.SEMI);
|
||||
|
||||
@SerializedName("ReloadTypes")
|
||||
public Set<ReloadType> reloadTypes = Set.of(ReloadType.MAGAZINE);
|
||||
|
||||
@SerializedName("BurstAmount")
|
||||
public int burstAmount;
|
||||
@SerializedName("BypassesArmor")
|
||||
|
|
|
@ -195,6 +195,10 @@ public class GunData {
|
|||
return defaultGunData().headshot + item.getCustomHeadshot(stack);
|
||||
}
|
||||
|
||||
public Set<ReloadType> reloadTypes() {
|
||||
return defaultGunData().reloadTypes;
|
||||
}
|
||||
|
||||
public int defaultNormalReloadTime() {
|
||||
return defaultGunData().normalReloadTime;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
package com.atsuishio.superbwarfare.item.gun.data;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
public enum ReloadType {
|
||||
@SerializedName("Magazine")
|
||||
MAGAZINE,
|
||||
@SerializedName("Clip")
|
||||
CLIP,
|
||||
@SerializedName("Iterative")
|
||||
ITERATIVE,
|
||||
}
|
|
@ -108,11 +108,6 @@ public class Glock17Item extends GunItem implements GeoItem {
|
|||
return "GLOCK-17";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMagazineReload(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOpenBolt(ItemStack stack) {
|
||||
return true;
|
||||
|
|
|
@ -110,11 +110,6 @@ public class Glock18Item extends GunItem implements GeoItem {
|
|||
return "GLOCK-18";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMagazineReload(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOpenBolt(ItemStack stack) {
|
||||
return true;
|
||||
|
@ -125,11 +120,6 @@ public class Glock18Item extends GunItem implements GeoItem {
|
|||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAutoWeapon(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canEjectShell(ItemStack stack) {
|
||||
return true;
|
||||
|
|
|
@ -110,11 +110,6 @@ public class M1911Item extends GunItem implements GeoItem {
|
|||
return "M-1911";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMagazineReload(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOpenBolt(ItemStack stack) {
|
||||
return true;
|
||||
|
|
|
@ -107,11 +107,6 @@ public class Mp443Item extends GunItem implements GeoItem {
|
|||
return "MP-443";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMagazineReload(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOpenBolt(ItemStack stack) {
|
||||
return true;
|
||||
|
|
|
@ -294,11 +294,6 @@ public class Trachelium extends GunItem implements GeoItem {
|
|||
return "TRACHELIUM";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMagazineReload(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCustomizable(ItemStack stack) {
|
||||
return true;
|
||||
|
|
|
@ -155,11 +155,6 @@ public class Ntw20Item extends GunItem implements GeoItem {
|
|||
return "NTW-20";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMagazineReload(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOpenBolt(ItemStack stack) {
|
||||
return true;
|
||||
|
|
|
@ -195,11 +195,6 @@ public class JavelinItem extends GunItem implements GeoItem {
|
|||
return Optional.of(new LauncherImageComponent(pStack));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMagazineReload(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getAmmoDisplayName(GunData data) {
|
||||
return "Javelin Missile";
|
||||
|
|
|
@ -103,12 +103,6 @@ public class M79Item extends GunItem implements GeoItem {
|
|||
public @NotNull Optional<TooltipComponent> getTooltipImage(@NotNull ItemStack pStack) {
|
||||
return Optional.of(new LauncherImageComponent(pStack));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMagazineReload(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getAmmoDisplayName(GunData data) {
|
||||
return "40mm Grenade";
|
||||
|
|
|
@ -132,11 +132,6 @@ public class RpgItem extends GunItem implements GeoItem {
|
|||
return Optional.of(new LauncherImageComponent(pStack));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMagazineReload(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shootBullet(Player player, GunData data, double spread, boolean zoom) {
|
||||
Level level = player.level();
|
||||
|
|
|
@ -205,11 +205,6 @@ public class SecondaryCataclysm extends GunItem implements GeoItem, EnergyStorag
|
|||
return new ItemAttributeModifiers(list, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isIterativeReload(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasMeleeAttack(ItemStack stack) {
|
||||
return true;
|
||||
|
|
|
@ -92,11 +92,6 @@ public class DevotionItem extends GunItem implements GeoItem {
|
|||
return "Devotion";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMagazineReload(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOpenBolt(ItemStack stack) {
|
||||
return true;
|
||||
|
@ -107,11 +102,6 @@ public class DevotionItem extends GunItem implements GeoItem {
|
|||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAutoWeapon(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canEjectShell(ItemStack stack) {
|
||||
return true;
|
||||
|
|
|
@ -128,21 +128,11 @@ public class M60Item extends GunItem implements GeoItem {
|
|||
return "M60";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMagazineReload(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOpenBolt(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAutoWeapon(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canEjectShell(ItemStack stack) {
|
||||
return true;
|
||||
|
|
|
@ -80,9 +80,4 @@ public class MinigunItem extends GunItem implements GeoItem {
|
|||
return "M134 MINIGUN";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAutoWeapon(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
|
@ -194,11 +194,6 @@ public class RpkItem extends GunItem implements GeoItem {
|
|||
return GunData.from(stack).attachment.get(AttachmentType.SCOPE) == 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMagazineReload(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOpenBolt(ItemStack stack) {
|
||||
return true;
|
||||
|
@ -209,11 +204,6 @@ public class RpkItem extends GunItem implements GeoItem {
|
|||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAutoWeapon(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCustomizable(ItemStack stack) {
|
||||
return true;
|
||||
|
|
|
@ -164,11 +164,6 @@ public class AK12Item extends GunItem implements GeoItem {
|
|||
return "AK-12";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMagazineReload(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOpenBolt(ItemStack stack) {
|
||||
return true;
|
||||
|
@ -179,11 +174,6 @@ public class AK12Item extends GunItem implements GeoItem {
|
|||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAutoWeapon(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCustomizable(ItemStack stack) {
|
||||
return true;
|
||||
|
|
|
@ -172,11 +172,6 @@ public class AK47Item extends GunItem implements GeoItem {
|
|||
return "AK-47";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMagazineReload(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOpenBolt(ItemStack stack) {
|
||||
return true;
|
||||
|
@ -187,11 +182,6 @@ public class AK47Item extends GunItem implements GeoItem {
|
|||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAutoWeapon(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCustomizable(ItemStack stack) {
|
||||
return true;
|
||||
|
|
|
@ -172,11 +172,6 @@ public class Hk416Item extends GunItem implements GeoItem {
|
|||
return "HK-416";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMagazineReload(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOpenBolt(ItemStack stack) {
|
||||
return true;
|
||||
|
@ -187,11 +182,6 @@ public class Hk416Item extends GunItem implements GeoItem {
|
|||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAutoWeapon(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCustomizable(ItemStack stack) {
|
||||
return true;
|
||||
|
|
|
@ -87,9 +87,4 @@ public class InsidiousItem extends GunItem implements GeoItem {
|
|||
public String getGunDisplayName() {
|
||||
return "INSIDIOUS";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMagazineReload(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -178,11 +178,6 @@ public class M4Item extends GunItem implements GeoItem {
|
|||
return "M4A1";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMagazineReload(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOpenBolt(ItemStack stack) {
|
||||
return true;
|
||||
|
@ -193,11 +188,6 @@ public class M4Item extends GunItem implements GeoItem {
|
|||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAutoWeapon(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCustomizable(ItemStack stack) {
|
||||
return true;
|
||||
|
|
|
@ -127,9 +127,4 @@ public class MarlinItem extends GunItem implements GeoItem {
|
|||
public String getGunDisplayName() {
|
||||
return "MARLIN-1894";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isIterativeReload(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -174,11 +174,6 @@ public class Mk14Item extends GunItem implements GeoItem {
|
|||
return "MK-14";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMagazineReload(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOpenBolt(ItemStack stack) {
|
||||
return true;
|
||||
|
@ -189,11 +184,6 @@ public class Mk14Item extends GunItem implements GeoItem {
|
|||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAutoWeapon(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCustomizable(ItemStack stack) {
|
||||
return true;
|
||||
|
|
|
@ -187,11 +187,6 @@ public class Qbz95Item extends GunItem implements GeoItem {
|
|||
return "QBZ-95-1";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMagazineReload(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOpenBolt(ItemStack stack) {
|
||||
return true;
|
||||
|
@ -202,11 +197,6 @@ public class Qbz95Item extends GunItem implements GeoItem {
|
|||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAutoWeapon(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCustomizable(ItemStack stack) {
|
||||
return true;
|
||||
|
|
|
@ -112,11 +112,6 @@ public class SksItem extends GunItem implements GeoItem {
|
|||
return "SKS";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMagazineReload(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOpenBolt(ItemStack stack) {
|
||||
return true;
|
||||
|
|
|
@ -122,11 +122,6 @@ public class Aa12Item extends GunItem implements GeoItem {
|
|||
return Optional.of(new ShotgunImageComponent(pStack));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMagazineReload(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOpenBolt(ItemStack stack) {
|
||||
return true;
|
||||
|
@ -137,11 +132,6 @@ public class Aa12Item extends GunItem implements GeoItem {
|
|||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAutoWeapon(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canEjectShell(ItemStack stack) {
|
||||
return true;
|
||||
|
|
|
@ -124,11 +124,6 @@ public class HomemadeShotgunItem extends GunItem implements GeoItem {
|
|||
return Optional.of(new ShotgunImageComponent(pStack));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMagazineReload(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOpenBolt(ItemStack stack) {
|
||||
return true;
|
||||
|
|
|
@ -137,9 +137,4 @@ public class M870Item extends GunItem implements GeoItem {
|
|||
public @NotNull Optional<TooltipComponent> getTooltipImage(@NotNull ItemStack pStack) {
|
||||
return Optional.of(new ShotgunImageComponent(pStack));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isIterativeReload(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -155,11 +155,6 @@ public class VectorItem extends GunItem implements GeoItem {
|
|||
return "VECTOR";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMagazineReload(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOpenBolt(ItemStack stack) {
|
||||
return true;
|
||||
|
@ -170,11 +165,6 @@ public class VectorItem extends GunItem implements GeoItem {
|
|||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAutoWeapon(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCustomizable(ItemStack stack) {
|
||||
return true;
|
||||
|
|
|
@ -86,9 +86,4 @@ public class HuntingRifleItem extends GunItem implements GeoItem {
|
|||
public String getGunDisplayName() {
|
||||
return "Hunting Rifle";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMagazineReload(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -136,14 +136,4 @@ public class K98Item extends GunItem implements GeoItem {
|
|||
public String getGunDisplayName() {
|
||||
return "KAR-98K";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isClipReload(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isIterativeReload(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -111,11 +111,6 @@ public class M98bItem extends GunItem implements GeoItem {
|
|||
return "M98-B";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMagazineReload(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOpenBolt(ItemStack stack) {
|
||||
return true;
|
||||
|
|
|
@ -134,9 +134,4 @@ public class MosinNagantItem extends GunItem implements GeoItem {
|
|||
public String getGunDisplayName() {
|
||||
return "MOSIN NAGANT";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isIterativeReload(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -174,11 +174,6 @@ public class SentinelItem extends GunItem implements GeoItem, EnergyStorageItem
|
|||
return Optional.of(new SentinelImageComponent(pStack));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMagazineReload(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOpenBolt(ItemStack stack) {
|
||||
return true;
|
||||
|
|
|
@ -158,11 +158,6 @@ public class SvdItem extends GunItem implements GeoItem {
|
|||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMagazineReload(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOpenBolt(ItemStack stack) {
|
||||
return true;
|
||||
|
|
|
@ -154,11 +154,6 @@ public class BocekItem extends GunItem implements GeoItem {
|
|||
public void onShoot(GunData data, Player player, double spread, boolean zoom) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMagazineReload(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFireKeyRelease(GunData data, Player player, double power, boolean zoom) {
|
||||
super.onFireKeyRelease(data, player, power, zoom);
|
||||
|
|
|
@ -155,11 +155,6 @@ public class TaserItem extends GunItem implements GeoItem, EnergyStorageItem {
|
|||
return Optional.of(new EnergyImageComponent(pStack));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMagazineReload(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getAmmoDisplayName(GunData data) {
|
||||
return "Electrode Rod";
|
||||
|
|
|
@ -3,6 +3,7 @@ package com.atsuishio.superbwarfare.network.message.send;
|
|||
import com.atsuishio.superbwarfare.Mod;
|
||||
import com.atsuishio.superbwarfare.item.gun.GunItem;
|
||||
import com.atsuishio.superbwarfare.item.gun.data.GunData;
|
||||
import com.atsuishio.superbwarfare.item.gun.data.ReloadType;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.network.codec.ByteBufCodecs;
|
||||
import net.minecraft.network.codec.StreamCodec;
|
||||
|
@ -40,9 +41,10 @@ public record ReloadMessage(int msgType) implements CustomPacketPayload {
|
|||
&& data.reload.time() == 0
|
||||
&& data.bolt.actionTimer.get() == 0
|
||||
) {
|
||||
boolean canSingleReload = gunItem.isIterativeReload(stack);
|
||||
boolean canReload = gunItem.isMagazineReload(stack) && !gunItem.isClipReload(stack);
|
||||
boolean clipLoad = data.ammo.get() == 0 && gunItem.isClipReload(stack);
|
||||
var reloadTypes = data.reloadTypes();
|
||||
boolean canSingleReload = reloadTypes.contains(ReloadType.ITERATIVE);
|
||||
boolean canReload = reloadTypes.contains(ReloadType.MAGAZINE) && !reloadTypes.contains(ReloadType.CLIP);
|
||||
boolean clipLoad = data.ammo.get() == 0 && reloadTypes.contains(ReloadType.CLIP);
|
||||
|
||||
// 检查备弹
|
||||
if (!data.hasBackupAmmo(player)) return;
|
||||
|
|
|
@ -15,7 +15,10 @@
|
|||
"BypassesArmor": 0.2,
|
||||
"SoundRadius": 14,
|
||||
"RPM": 600,
|
||||
"AvailableFireModes": ["Semi", "Auto"],
|
||||
"AvailableFireModes": [
|
||||
"Semi",
|
||||
"Auto"
|
||||
],
|
||||
"AmmoType": "@RifleAmmo",
|
||||
"AvailablePerks": [
|
||||
"@Ammo",
|
||||
|
|
|
@ -9,6 +9,10 @@
|
|||
"BoltActionTime": 22,
|
||||
"Weight": 5,
|
||||
"DefaultFireMode": "Auto",
|
||||
"ReloadTypes": [
|
||||
"Clip",
|
||||
"Iterative"
|
||||
],
|
||||
"EmptyReloadTime": 59,
|
||||
"PrepareTime": 29,
|
||||
"IterativeTime": 11,
|
||||
|
|
|
@ -8,6 +8,9 @@
|
|||
"Magazine": 8,
|
||||
"ProjectileAmount": 12,
|
||||
"Weight": 4,
|
||||
"ReloadTypes": [
|
||||
"Iterative"
|
||||
],
|
||||
"PrepareTime": 7,
|
||||
"PrepareLoadTime": 36,
|
||||
"IterativeTime": 16,
|
||||
|
|
|
@ -7,6 +7,9 @@
|
|||
"Velocity": 38,
|
||||
"Magazine": 8,
|
||||
"Weight": 3,
|
||||
"ReloadTypes": [
|
||||
"Iterative"
|
||||
],
|
||||
"PrepareTime": 7,
|
||||
"IterativeTime": 16,
|
||||
"FinishTime": 19,
|
||||
|
|
|
@ -7,6 +7,9 @@
|
|||
"Headshot": 3,
|
||||
"Velocity": 42,
|
||||
"Magazine": 5,
|
||||
"ReloadTypes": [
|
||||
"Iterative"
|
||||
],
|
||||
"BoltActionTime": 22,
|
||||
"Weight": 5,
|
||||
"PrepareTime": 29,
|
||||
|
|
|
@ -8,6 +8,9 @@
|
|||
"Velocity": 3.75,
|
||||
"Magazine": 8,
|
||||
"Weight": 9,
|
||||
"ReloadTypes": [
|
||||
"Iterative"
|
||||
],
|
||||
"PrepareLoadTime": 31,
|
||||
"IterativeTime": 20,
|
||||
"FinishTime": 19,
|
||||
|
|
Loading…
Add table
Reference in a new issue