From 825cd772e6768e8f6bdd629241b55f84795375f5 Mon Sep 17 00:00:00 2001 From: Light_Quanta Date: Sat, 5 Apr 2025 19:10:49 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=BB=E9=99=A4=E6=9B=B4=E5=A4=9A=E6=97=A0?= =?UTF-8?q?=E7=94=A8NBT=EF=BC=8C=E9=87=8D=E5=91=BD=E5=90=8D=E9=83=A8?= =?UTF-8?q?=E5=88=86getter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../superbwarfare/client/ClickHandler.java | 8 +- .../superbwarfare/client/PoseTool.java | 2 +- .../client/model/item/AK12ItemModel.java | 2 +- .../client/model/item/AK47ItemModel.java | 2 +- .../client/model/item/BocekItemModel.java | 2 +- .../client/model/item/DevotionItemModel.java | 2 +- .../client/model/item/Glock17ItemModel.java | 2 +- .../client/model/item/Glock18ItemModel.java | 4 +- .../client/model/item/Hk416ItemModel.java | 4 +- .../client/model/item/InsidiousItemModel.java | 2 +- .../client/model/item/JavelinItemModel.java | 2 +- .../client/model/item/K98ItemModel.java | 7 +- .../client/model/item/M1911ItemModel.java | 2 +- .../client/model/item/M4ItemModel.java | 2 +- .../client/model/item/M60ItemModel.java | 4 +- .../client/model/item/M870ItemModel.java | 2 +- .../client/model/item/M98bItemModel.java | 2 +- .../client/model/item/MarlinItemModel.java | 2 +- .../client/model/item/Mk14ItemModel.java | 2 +- .../model/item/MosinNagantItemModel.java | 4 +- .../client/model/item/Mp443ItemModel.java | 2 +- .../client/model/item/Ntw20Model.java | 2 +- .../client/model/item/RpgItemModel.java | 2 +- .../client/model/item/RpkItemModel.java | 2 +- .../model/item/SecondaryCataclysmModel.java | 2 +- .../client/model/item/SentinelItemModel.java | 6 +- .../client/model/item/SksItemModel.java | 2 +- .../client/model/item/SvdItemModel.java | 2 +- .../model/item/TracheliumItemModel.java | 2 +- .../client/model/item/VectorItemModel.java | 4 +- .../client/overlay/AmmoBarOverlay.java | 7 +- .../client/overlay/JavelinHudOverlay.java | 10 ++- .../client/tooltip/ClientGunImageTooltip.java | 6 +- .../tooltip/ClientSentinelImageTooltip.java | 2 +- .../event/ClientEventHandler.java | 20 ++--- .../superbwarfare/event/GunEventHandler.java | 40 +++++----- .../event/LivingEventHandler.java | 54 +++++++------- .../event/PlayerEventHandler.java | 35 ++++----- .../event/ReloadEventHandler.java | 14 ++-- .../superbwarfare/item/gun/GunData.java | 73 ++++++++++++------- .../superbwarfare/item/gun/GunEvents.java | 2 +- .../superbwarfare/item/gun/GunItem.java | 30 +++----- .../item/gun/handgun/Trachelium.java | 6 +- .../item/gun/heavy/Ntw20Item.java | 4 +- .../item/gun/launcher/JavelinItem.java | 12 +-- .../item/gun/launcher/M79Item.java | 14 ++-- .../item/gun/launcher/RpgItem.java | 14 ++-- .../item/gun/launcher/SecondaryCataclysm.java | 18 ++--- .../item/gun/machinegun/M60Item.java | 4 +- .../item/gun/machinegun/MinigunItem.java | 4 +- .../item/gun/rifle/AK12Item.java | 2 +- .../item/gun/rifle/AK47Item.java | 2 +- .../item/gun/rifle/Hk416Item.java | 2 +- .../superbwarfare/item/gun/rifle/M4Item.java | 2 +- .../item/gun/rifle/MarlinItem.java | 4 +- .../item/gun/rifle/Mk14Item.java | 2 +- .../item/gun/rifle/Qbz95Item.java | 2 +- .../superbwarfare/item/gun/rifle/SksItem.java | 4 +- .../item/gun/shotgun/M870Item.java | 2 +- .../item/gun/smg/VectorItem.java | 2 +- .../item/gun/sniper/K98Item.java | 6 +- .../item/gun/sniper/M98bItem.java | 4 +- .../item/gun/sniper/MosinNagantItem.java | 10 +-- .../item/gun/sniper/SentinelItem.java | 6 +- .../item/gun/special/BocekItem.java | 6 +- .../item/gun/special/TaserItem.java | 14 ++-- .../menu/ReforgingTableMenu.java | 18 ++--- .../message/send/AdjustZoomFovMessage.java | 2 +- .../network/message/send/EditMessage.java | 2 +- .../network/message/send/FireMessage.java | 10 +-- .../network/message/send/FireModeMessage.java | 4 +- .../network/message/send/ReloadMessage.java | 14 ++-- .../message/send/SensitivityMessage.java | 2 +- .../network/message/send/ShootMessage.java | 12 +-- .../message/send/SwitchScopeMessage.java | 2 +- .../network/message/send/ZoomMessage.java | 2 +- .../superbwarfare/perk/PerkHelper.java | 6 +- .../superbwarfare/tools/GunsTool.java | 59 ++------------- 78 files changed, 312 insertions(+), 345 deletions(-) diff --git a/src/main/java/com/atsuishio/superbwarfare/client/ClickHandler.java b/src/main/java/com/atsuishio/superbwarfare/client/ClickHandler.java index d57c96d3c..a907b5e11 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/ClickHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/ClickHandler.java @@ -334,10 +334,10 @@ public class ClickHandler { && !notInGame() ) { var data = GunData.from(stack); - var tag = data.getTag(); + var tag = data.tag(); player.playSound(ModSounds.TRIGGER_CLICK.get(), 1, 1); - if (!gunItem.useBackpackAmmo(stack) && data.getAmmo() <= 0 && GunsTool.getGunIntTag(tag, "ReloadTime") == 0) { + if (!gunItem.useBackpackAmmo(stack) && data.ammo() <= 0 && GunsTool.getGunIntTag(tag, "ReloadTime") == 0) { if (ReloadConfig.LEFT_CLICK_RELOAD.get()) { PacketDistributor.sendToServer(new ReloadMessage(0)); ClientEventHandler.burstFireAmount = 0; @@ -345,11 +345,11 @@ public class ClickHandler { } else { PacketDistributor.sendToServer(new FireMessage(0)); if ((!(data.normalReloading() || data.emptyReloading()) - && !data.isReloading() + && !data.reloading() && !GunsTool.getGunBooleanTag(tag, "Charging") && !GunsTool.getGunBooleanTag(tag, "NeedBoltAction")) && drawTime < 0.01) { - if (data.getFireMode() == 1) { + if (data.fireMode() == 1) { if (ClientEventHandler.burstFireAmount == 0) { ClientEventHandler.burstFireAmount = data.burstAmount(); } diff --git a/src/main/java/com/atsuishio/superbwarfare/client/PoseTool.java b/src/main/java/com/atsuishio/superbwarfare/client/PoseTool.java index 5d40340b0..c9230f050 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/PoseTool.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/PoseTool.java @@ -18,7 +18,7 @@ public class PoseTool { var data = GunData.from(stack); if (data.emptyReloading() || data.getReloadState() == GunData.ReloadState.NORMAL_RELOADING - || data.isReloading() + || data.reloading() || GunsTool.getGunBooleanTag(tag, "Charging") ) { return HumanoidModel.ArmPose.CROSSBOW_CHARGE; diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/item/AK12ItemModel.java b/src/main/java/com/atsuishio/superbwarfare/client/model/item/AK12ItemModel.java index 8dbc75596..a94b4b0b0 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/item/AK12ItemModel.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/item/AK12ItemModel.java @@ -74,7 +74,7 @@ public class AK12ItemModel extends GeoModel { double fr = ClientEventHandler.fireRot; var data = GunData.from(stack); - var tag = data.getTag(); + var tag = data.tag(); int type = GunsTool.getAttachmentType(tag, GunsTool.AttachmentType.SCOPE); float posY = switch (type) { diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/item/AK47ItemModel.java b/src/main/java/com/atsuishio/superbwarfare/client/model/item/AK47ItemModel.java index 2fa853b2a..40f968c56 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/item/AK47ItemModel.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/item/AK47ItemModel.java @@ -115,7 +115,7 @@ public class AK47ItemModel extends GeoModel { scope3.setScaleZ(1f - (0.7f * (float) zp)); var data = GunData.from(stack); - var tag = data.getTag(); + var tag = data.tag(); tag.putBoolean("HoloHidden", !(gun.getPosX() > 1.8)); data.save(); diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/item/BocekItemModel.java b/src/main/java/com/atsuishio/superbwarfare/client/model/item/BocekItemModel.java index 780fe5326..bbfe71caa 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/item/BocekItemModel.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/item/BocekItemModel.java @@ -106,7 +106,7 @@ public class BocekItemModel extends GeoModel { shen.setRotZ(60 * Mth.DEG_TO_RAD * (float) zp + (float) (0.05f * zpz) - 0.2f); var data = GunData.from(stack); - var tag = data.getTag(); + var tag = data.tag(); tag.putBoolean("HoloHidden", !((shen_pos.getPosX() < -0.6 && gun.getPosZ() < -2))); data.save(); diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/item/DevotionItemModel.java b/src/main/java/com/atsuishio/superbwarfare/client/model/item/DevotionItemModel.java index a8222200b..98ddba729 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/item/DevotionItemModel.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/item/DevotionItemModel.java @@ -75,7 +75,7 @@ public class DevotionItemModel extends GeoModel { GeoBone holo = getAnimationProcessor().getBone("holo"); var data = GunData.from(stack); - var tag = data.getTag(); + var tag = data.tag(); tag.putBoolean("HoloHidden", !(gun.getPosX() > 1.8)); data.save(); diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/item/Glock17ItemModel.java b/src/main/java/com/atsuishio/superbwarfare/client/model/item/Glock17ItemModel.java index ea45f3fb2..13147889f 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/item/Glock17ItemModel.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/item/Glock17ItemModel.java @@ -104,7 +104,7 @@ public class Glock17ItemModel extends GeoModel { float numP = (float) (1 - 0.68 * zt); var data = GunData.from(stack); - var tag = data.getTag(); + var tag = data.tag(); if (GunsTool.getGunIntTag(tag, "ReloadTime") > 0) { main.setRotX(numR * main.getRotX()); diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/item/Glock18ItemModel.java b/src/main/java/com/atsuishio/superbwarfare/client/model/item/Glock18ItemModel.java index d9a41db4c..2115fd928 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/item/Glock18ItemModel.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/item/Glock18ItemModel.java @@ -48,8 +48,8 @@ public class Glock18ItemModel extends GeoModel { if (!stack.is(ModTags.Items.GUN)) return; var data = GunData.from(stack); - var tag = data.getTag(); - int mode = GunsTool.getGunIntTag(tag, "FireMode"); + var tag = data.tag(); + int mode = data.fireMode(); if (mode == 0) { switch_.setRotX(35 * Mth.DEG_TO_RAD); } diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/item/Hk416ItemModel.java b/src/main/java/com/atsuishio/superbwarfare/client/model/item/Hk416ItemModel.java index 7627a729f..988c73b40 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/item/Hk416ItemModel.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/item/Hk416ItemModel.java @@ -109,7 +109,7 @@ public class Hk416ItemModel extends GeoModel { scope3.setScaleZ(1f - (0.5f * (float) zp)); var data = GunData.from(stack); - var tag = data.getTag(); + var tag = data.tag(); tag.putBoolean("HoloHidden", !(gun.getPosX() > 3.1)); data.save(); @@ -155,7 +155,7 @@ public class Hk416ItemModel extends GeoModel { l.setRotX(rotXBipod * Mth.DEG_TO_RAD); r.setRotX(rotXBipod * Mth.DEG_TO_RAD); - int mode = GunsTool.getGunIntTag(tag, "FireMode"); + int mode = data.fireMode(); kuaimanji.setRotX(mode == 2 ? 90 * Mth.DEG_TO_RAD : 0); diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/item/InsidiousItemModel.java b/src/main/java/com/atsuishio/superbwarfare/client/model/item/InsidiousItemModel.java index 10d1c5ad5..ad164af60 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/item/InsidiousItemModel.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/item/InsidiousItemModel.java @@ -69,7 +69,7 @@ public class InsidiousItemModel extends GeoModel { gun.setScaleZ(1f - (0.82f * (float) zp)); var data = GunData.from(stack); - var tag = data.getTag(); + var tag = data.tag(); tag.putBoolean("HoloHidden", !(gun.getPosX() > 3)); data.save(); diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/item/JavelinItemModel.java b/src/main/java/com/atsuishio/superbwarfare/client/model/item/JavelinItemModel.java index cfd181882..a6b007525 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/item/JavelinItemModel.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/item/JavelinItemModel.java @@ -69,7 +69,7 @@ public class JavelinItemModel extends GeoModel { javelin.setHidden(gun.getPosZ() > 15.85); var data = GunData.from(stack); - var tag = data.getTag(); + var tag = data.tag(); tag.putBoolean("HoloHidden", !(gun.getPosZ() > 15.85)); data.save(); diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/item/K98ItemModel.java b/src/main/java/com/atsuishio/superbwarfare/client/model/item/K98ItemModel.java index b035b4f93..1dbb0fe0a 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/item/K98ItemModel.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/item/K98ItemModel.java @@ -7,7 +7,6 @@ import com.atsuishio.superbwarfare.init.ModTags; import com.atsuishio.superbwarfare.item.gun.GunData; import com.atsuishio.superbwarfare.item.gun.sniper.K98Item; import com.atsuishio.superbwarfare.tools.GunsTool; -import com.atsuishio.superbwarfare.tools.NBTTool; import net.minecraft.client.Minecraft; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.Mth; @@ -46,8 +45,8 @@ public class K98ItemModel extends GeoModel { if (!stack.is(ModTags.Items.GUN)) return; var data = GunData.from(stack); - final var tag = data.getTag(); - if (NBTTool.getTag(stack).getDouble("prepare") > 11 && GunsTool.getGunIntTag(tag, "Ammo") == 1) { + final var tag = data.tag(); + if (tag.getDouble("prepare") > 11 && data.ammo() == 1) { clip.setScaleX(0); clip.setScaleY(0); clip.setScaleZ(0); @@ -110,7 +109,7 @@ public class K98ItemModel extends GeoModel { float numR = (float) (1 - 0.52 * zt); float numP = (float) (1 - 0.58 * zt); - if (GunsTool.getGunIntTag(tag, "ReloadTime") > 0 || data.isReloading()) { + if (GunsTool.getGunIntTag(tag, "ReloadTime") > 0 || data.reloading()) { main.setRotX(numR * main.getRotX()); main.setRotY(numR * main.getRotY()); main.setRotZ(numR * main.getRotZ()); diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/item/M1911ItemModel.java b/src/main/java/com/atsuishio/superbwarfare/client/model/item/M1911ItemModel.java index b24ccf4cb..e394a642c 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/item/M1911ItemModel.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/item/M1911ItemModel.java @@ -106,7 +106,7 @@ public class M1911ItemModel extends GeoModel { float numP = (float) (1 - 0.68 * zt); var data = GunData.from(stack); - var tag = data.getTag(); + var tag = data.tag(); if (GunsTool.getGunIntTag(tag, "ReloadTime") > 0) { main.setRotX(numR * main.getRotX()); main.setRotY(numR * main.getRotY()); diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/item/M4ItemModel.java b/src/main/java/com/atsuishio/superbwarfare/client/model/item/M4ItemModel.java index 998e0ff4d..8303d53f8 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/item/M4ItemModel.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/item/M4ItemModel.java @@ -131,7 +131,7 @@ public class M4ItemModel extends GeoModel { button7.setScaleX(1f - (0.5f * (float) zp)); var data = GunData.from(stack); - var tag = data.getTag(); + var tag = data.tag(); tag.putBoolean("HoloHidden", !(gun.getPosX() > 2.385)); data.save(); diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/item/M60ItemModel.java b/src/main/java/com/atsuishio/superbwarfare/client/model/item/M60ItemModel.java index d757098dd..37a0a03d7 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/item/M60ItemModel.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/item/M60ItemModel.java @@ -60,8 +60,8 @@ public class M60ItemModel extends GeoModel { } var data = GunData.from(stack); - var tag = data.getTag(); - int ammo = GunsTool.getGunIntTag(tag, "Ammo"); + var tag = data.tag(); + int ammo = data.ammo(); boolean flag = GunsTool.getGunBooleanTag(tag, "HideBulletChain"); if (ammo < 5 && flag) { diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/item/M870ItemModel.java b/src/main/java/com/atsuishio/superbwarfare/client/model/item/M870ItemModel.java index 897cdf6c4..efc04f967 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/item/M870ItemModel.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/item/M870ItemModel.java @@ -99,7 +99,7 @@ public class M870ItemModel extends GeoModel { float numR = (float) (1 - 0.72 * zt); float numP = (float) (1 - 0.82 * zt); - if (GunData.from(stack).isReloading()) { + if (GunData.from(stack).reloading()) { main.setRotX(numR * main.getRotX()); main.setRotY(numR * main.getRotY()); main.setRotZ(numR * main.getRotZ()); diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/item/M98bItemModel.java b/src/main/java/com/atsuishio/superbwarfare/client/model/item/M98bItemModel.java index 1403e786d..5f2caf2b9 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/item/M98bItemModel.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/item/M98bItemModel.java @@ -89,7 +89,7 @@ public class M98bItemModel extends GeoModel { gun.setRotZ((float) (0.02f * zpz)); var data = GunData.from(stack); - var tag = data.getTag(); + var tag = data.tag(); tag.putBoolean("HoloHidden", !(gun.getPosX() > 1.8)); data.save(); diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/item/MarlinItemModel.java b/src/main/java/com/atsuishio/superbwarfare/client/model/item/MarlinItemModel.java index 1679f11ee..43ae2615f 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/item/MarlinItemModel.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/item/MarlinItemModel.java @@ -101,7 +101,7 @@ public class MarlinItemModel extends GeoModel { float numR = (float) (1 - 0.55 * zt); float numP = (float) (1 - 0.88 * zt); - if (GunData.from(stack).isReloading()) { + if (GunData.from(stack).reloading()) { main.setRotX(numR * main.getRotX()); main.setRotY(numR * main.getRotY()); main.setRotZ(numR * main.getRotZ()); diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/item/Mk14ItemModel.java b/src/main/java/com/atsuishio/superbwarfare/client/model/item/Mk14ItemModel.java index 1d6c1c292..241b775e8 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/item/Mk14ItemModel.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/item/Mk14ItemModel.java @@ -140,7 +140,7 @@ public class Mk14ItemModel extends GeoModel { action.setPosZ(2.5f * (float) fp); var data = GunData.from(stack); - var tag = data.getTag(); + var tag = data.tag(); tag.putBoolean("HoloHidden", !(gun.getPosX() > 2.5)); data.save(); diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/item/MosinNagantItemModel.java b/src/main/java/com/atsuishio/superbwarfare/client/model/item/MosinNagantItemModel.java index ef382ed52..5e333ab09 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/item/MosinNagantItemModel.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/item/MosinNagantItemModel.java @@ -87,7 +87,7 @@ public class MosinNagantItemModel extends GeoModel { } var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); tag.putBoolean("HoloHidden", !(gun.getPosX() > 1.4)); data.save(); @@ -125,7 +125,7 @@ public class MosinNagantItemModel extends GeoModel { float numR = (float) (1 - 0.97 * zt); float numP = (float) (1 - 0.81 * zt); - if (data.isReloading() || GunsTool.getGunIntTag(tag, "BoltActionTick") > 0) { + if (data.reloading() || GunsTool.getGunIntTag(tag, "BoltActionTick") > 0) { main.setRotX(numR * main.getRotX()); main.setRotY(numR * main.getRotY()); main.setRotZ(numR * main.getRotZ()); diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/item/Mp443ItemModel.java b/src/main/java/com/atsuishio/superbwarfare/client/model/item/Mp443ItemModel.java index d8516623f..f838e91ff 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/item/Mp443ItemModel.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/item/Mp443ItemModel.java @@ -103,7 +103,7 @@ public class Mp443ItemModel extends GeoModel { float numP = (float) (1 - 0.68 * zt); var data = GunData.from(stack); - var tag = data.getTag(); + var tag = data.tag(); if (GunsTool.getGunIntTag(tag, "ReloadTime") > 0) { main.setRotX(numR * main.getRotX()); main.setRotY(numR * main.getRotY()); diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/item/Ntw20Model.java b/src/main/java/com/atsuishio/superbwarfare/client/model/item/Ntw20Model.java index 1305a6059..4dec8bd68 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/item/Ntw20Model.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/item/Ntw20Model.java @@ -138,7 +138,7 @@ public class Ntw20Model extends GeoModel { CrossHairOverlay.gunRot = shen.getRotZ(); var data = GunData.from(stack); - var tag = data.getTag(); + var tag = data.tag(); tag.putBoolean("HoloHidden", !(gun.getPosX() > 4.3)); data.save(); diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/item/RpgItemModel.java b/src/main/java/com/atsuishio/superbwarfare/client/model/item/RpgItemModel.java index b260d5534..263c8c704 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/item/RpgItemModel.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/item/RpgItemModel.java @@ -46,7 +46,7 @@ public class RpgItemModel extends GeoModel { if (!stack.is(ModTags.Items.GUN)) return; var data = GunData.from(stack); - var tag = data.getTag(); + var tag = data.tag(); if (GunsTool.getGunBooleanTag(tag, "CloseHammer")) { hammer.setRotX(-90 * Mth.DEG_TO_RAD); } diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/item/RpkItemModel.java b/src/main/java/com/atsuishio/superbwarfare/client/model/item/RpkItemModel.java index 944961447..1e8b216b5 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/item/RpkItemModel.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/item/RpkItemModel.java @@ -76,7 +76,7 @@ public class RpkItemModel extends GeoModel { var data = GunData.from(stack); - var tag = data.getTag(); + var tag = data.tag(); tag.putBoolean("HoloHidden", !(gun.getPosX() > 1.65)); data.save(); diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/item/SecondaryCataclysmModel.java b/src/main/java/com/atsuishio/superbwarfare/client/model/item/SecondaryCataclysmModel.java index 3b7418f91..ae21bfdad 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/item/SecondaryCataclysmModel.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/item/SecondaryCataclysmModel.java @@ -101,7 +101,7 @@ public class SecondaryCataclysmModel extends GeoModel { float numP = (float) (1 - 0.68 * zt); var data = GunData.from(stack); - var tag = data.getTag(); + var tag = data.tag(); if (GunsTool.getGunIntTag(tag, "ReloadTime") > 0) { main.setRotX(numR * main.getRotX()); main.setRotY(numR * main.getRotY()); diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/item/SentinelItemModel.java b/src/main/java/com/atsuishio/superbwarfare/client/model/item/SentinelItemModel.java index c1849a047..7cc4edf69 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/item/SentinelItemModel.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/item/SentinelItemModel.java @@ -77,7 +77,7 @@ public class SentinelItemModel extends GeoModel { holo.setPosY(0.09f); var data = GunData.from(stack); - var tag = data.getTag(); + var tag = data.tag(); tag.putBoolean("HoloHidden", !(gun.getPosX() > 2.4)); data.save(); @@ -108,8 +108,8 @@ public class SentinelItemModel extends GeoModel { root.setRotY((float) (0.2f * movePosX + Mth.DEG_TO_RAD * 300 * ClientEventHandler.drawTime + Mth.DEG_TO_RAD * turnRotY)); root.setRotZ((float) (0.2f * movePosX + moveRotZ + Mth.DEG_TO_RAD * 90 * ClientEventHandler.drawTime + 2.7f * mph + Mth.DEG_TO_RAD * turnRotZ)); - if (GunsTool.getGunIntTag(tag, "Ammo") <= 5) { - ammo.setScaleX((float) GunsTool.getGunIntTag(tag, "Ammo") / 5); + if (data.ammo() <= 5) { + ammo.setScaleX((float) data.ammo() / 5); } GeoBone camera = getAnimationProcessor().getBone("camera"); diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/item/SksItemModel.java b/src/main/java/com/atsuishio/superbwarfare/client/model/item/SksItemModel.java index 601d9601e..f349ae4dd 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/item/SksItemModel.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/item/SksItemModel.java @@ -69,7 +69,7 @@ public class SksItemModel extends GeoModel { gun.setRotZ((float) (0.05f * zpz)); var data = GunData.from(stack); - var tag = data.getTag(); + var tag = data.tag(); tag.putBoolean("HoloHidden", gun.getPosX() <= 1.2); data.save(); GeoBone shen = getAnimationProcessor().getBone("shen"); diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/item/SvdItemModel.java b/src/main/java/com/atsuishio/superbwarfare/client/model/item/SvdItemModel.java index 0e37efdce..888b75c69 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/item/SvdItemModel.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/item/SvdItemModel.java @@ -111,7 +111,7 @@ public class SvdItemModel extends GeoModel { cross3.setScaleY((float) (1f + (0.1 * zp))); var data = GunData.from(stack); - var tag = data.getTag(); + var tag = data.tag(); tag.putBoolean("HoloHidden", gun.getPosX() <= 1.4); data.save(); diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/item/TracheliumItemModel.java b/src/main/java/com/atsuishio/superbwarfare/client/model/item/TracheliumItemModel.java index 64494f2aa..ffc9fd6ff 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/item/TracheliumItemModel.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/item/TracheliumItemModel.java @@ -154,7 +154,7 @@ public class TracheliumItemModel extends GeoModel { CrossHairOverlay.gunRot = shen.getRotZ(); var data = GunData.from(stack); - var tag = data.getTag(); + var tag = data.tag(); tag.putBoolean("HoloHidden", (gun.getPosX() <= 3 || Mth.abs(shen.getRotX()) > (scopeType == 2 ? 3 : 1) * Mth.DEG_TO_RAD || Mth.abs(main.getRotX()) > (scopeType == 2 ? 5.7 : 1) * Mth.DEG_TO_RAD || Mth.abs(main.getRotY()) > 3 * Mth.DEG_TO_RAD)); data.save(); diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/item/VectorItemModel.java b/src/main/java/com/atsuishio/superbwarfare/client/model/item/VectorItemModel.java index b60ca7830..04a56b1c0 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/item/VectorItemModel.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/item/VectorItemModel.java @@ -56,8 +56,8 @@ public class VectorItemModel extends GeoModel { if (!stack.is(ModTags.Items.GUN)) return; var data = GunData.from(stack); - var tag = data.getTag(); - int mode = GunsTool.getGunIntTag(tag, "FireMode"); + var tag = data.tag(); + int mode = data.fireMode(); if (mode == 0) { kmj.setRotX(-120 * Mth.DEG_TO_RAD); } diff --git a/src/main/java/com/atsuishio/superbwarfare/client/overlay/AmmoBarOverlay.java b/src/main/java/com/atsuishio/superbwarfare/client/overlay/AmmoBarOverlay.java index f2b7f3ffb..b9c9b624d 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/overlay/AmmoBarOverlay.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/overlay/AmmoBarOverlay.java @@ -391,7 +391,7 @@ public class AmmoBarOverlay { } private static ResourceLocation getFireMode(GunData data) { - return switch (data.getFireMode()) { + return switch (data.fireMode()) { case 1 -> BURST; case 2 -> AUTO; default -> SEMI; @@ -400,7 +400,8 @@ public class AmmoBarOverlay { private static int getGunAmmoCount(Player player) { ItemStack stack = player.getMainHandItem(); - final var tag = NBTTool.getTag(stack); + var data = GunData.from(stack); + var tag = data.tag(); if (stack.getItem() == ModItems.MINIGUN.get()) { var cap = player.getCapability(ModCapabilities.PLAYER_VARIABLE); @@ -411,7 +412,7 @@ public class AmmoBarOverlay { return GunsTool.getGunIntTag(tag, "MaxAmmo"); } - return GunsTool.getGunIntTag(tag, "Ammo"); + return data.ammo(); } private static String getPlayerAmmoCount(Player player) { diff --git a/src/main/java/com/atsuishio/superbwarfare/client/overlay/JavelinHudOverlay.java b/src/main/java/com/atsuishio/superbwarfare/client/overlay/JavelinHudOverlay.java index 03ef760d4..800d50a8b 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/overlay/JavelinHudOverlay.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/overlay/JavelinHudOverlay.java @@ -6,8 +6,8 @@ import com.atsuishio.superbwarfare.client.RenderHelper; import com.atsuishio.superbwarfare.entity.vehicle.base.ArmedVehicleEntity; import com.atsuishio.superbwarfare.event.ClientEventHandler; import com.atsuishio.superbwarfare.init.ModItems; +import com.atsuishio.superbwarfare.item.gun.GunData; import com.atsuishio.superbwarfare.tools.EntityFindUtil; -import com.atsuishio.superbwarfare.tools.GunsTool; import com.atsuishio.superbwarfare.tools.NBTTool; import com.atsuishio.superbwarfare.tools.SeekTool; import com.mojang.blaze3d.platform.GlStateManager; @@ -55,9 +55,11 @@ public class JavelinHudOverlay { if (player.getVehicle() instanceof ArmedVehicleEntity iArmedVehicle && iArmedVehicle.banHand(player)) return; - var tag = NBTTool.getTag(stack); - if ((stack.getItem() == ModItems.JAVELIN.get() && !tag.getBoolean("HoloHidden")) && Minecraft.getInstance().options.getCameraType().isFirstPerson() && ClientEventHandler.zoom) { + if ((stack.getItem() == ModItems.JAVELIN.get() && !NBTTool.getTag(stack).getBoolean("HoloHidden")) && Minecraft.getInstance().options.getCameraType().isFirstPerson() && ClientEventHandler.zoom) { + var data = GunData.from(stack); + var tag = data.tag(); + RenderSystem.disableDepthTest(); RenderSystem.depthMask(false); RenderSystem.enableBlend(); @@ -78,7 +80,7 @@ public class JavelinHudOverlay { float j1 = l + j; preciseBlit(event.getGuiGraphics(), Mod.loc("textures/screens/javelin/javelin_hud.png"), k, l, 0, 0.0F, i, j, i, j); preciseBlit(event.getGuiGraphics(), Mod.loc(tag.getBoolean("TopMode") ? "textures/screens/javelin/top.png" : "textures/screens/javelin/dir.png"), k, l, 0, 0.0F, i, j, i, j); - preciseBlit(event.getGuiGraphics(), Mod.loc(GunsTool.getGunIntTag(tag, "Ammo") > 0 ? "textures/screens/javelin/missile_green.png" : "textures/screens/javelin/missile_red.png"), k, l, 0, 0.0F, i, j, i, j); + preciseBlit(event.getGuiGraphics(), Mod.loc(data.ammo() > 0 ? "textures/screens/javelin/missile_green.png" : "textures/screens/javelin/missile_red.png"), k, l, 0, 0.0F, i, j, i, j); if (tag.getInt("SeekTime") > 1 && tag.getInt("SeekTime") < 20) { preciseBlit(event.getGuiGraphics(), Mod.loc("textures/screens/javelin/seek.png"), k, l, 0, 0.0F, i, j, i, j); } diff --git a/src/main/java/com/atsuishio/superbwarfare/client/tooltip/ClientGunImageTooltip.java b/src/main/java/com/atsuishio/superbwarfare/client/tooltip/ClientGunImageTooltip.java index bc92aad48..6aeabd4a3 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/tooltip/ClientGunImageTooltip.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/tooltip/ClientGunImageTooltip.java @@ -127,8 +127,8 @@ public class ClientGunImageTooltip implements ClientTooltipComponent { * 获取武器等级文本组件 */ protected Component getLevelComponent() { - int level = data.getLevel(); - double rate = data.getExp() / (20 * Math.pow(level, 2) + 160 * level + 20); + int level = data.level(); + double rate = data.exp() / (20 * Math.pow(level, 2) + 160 * level + 20); ChatFormatting formatting; if (level < 10) { @@ -154,7 +154,7 @@ public class ClientGunImageTooltip implements ClientTooltipComponent { * 获取武器强化点数文本组件 */ protected Component getUpgradePointComponent() { - int upgradePoint = Mth.floor(data.getUpgradePoint()); + int upgradePoint = Mth.floor(data.upgradePoint()); return Component.translatable("des.superbwarfare.guns.upgrade_point").withStyle(ChatFormatting.GRAY) .append(Component.literal("").withStyle(ChatFormatting.RESET)) .append(Component.literal(String.valueOf(upgradePoint)).withStyle(ChatFormatting.WHITE).withStyle(ChatFormatting.BOLD)); diff --git a/src/main/java/com/atsuishio/superbwarfare/client/tooltip/ClientSentinelImageTooltip.java b/src/main/java/com/atsuishio/superbwarfare/client/tooltip/ClientSentinelImageTooltip.java index eb32f29df..125cf0e94 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/tooltip/ClientSentinelImageTooltip.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/tooltip/ClientSentinelImageTooltip.java @@ -19,7 +19,7 @@ public class ClientSentinelImageTooltip extends ClientEnergyImageTooltip { var cap = stack.getCapability(Capabilities.EnergyStorage.ITEM); if (cap != null && cap.getEnergyStored() > 0) { - double damage = (data.damage() + GunsTool.getGunDoubleTag(data.getTag(), "ChargedDamage")) + double damage = (data.damage() + GunsTool.getGunDoubleTag(data.tag(), "ChargedDamage")) * TooltipTool.perkDamage(stack); return Component.translatable("des.superbwarfare.guns.damage").withStyle(ChatFormatting.GRAY) .append(Component.literal("").withStyle(ChatFormatting.RESET)) diff --git a/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java b/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java index 603216314..e11d7906f 100644 --- a/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java @@ -312,7 +312,7 @@ public class ClientEventHandler { && !notInGame() && cap != null && !cap.edit && !(data.normalReloading() || data.emptyReloading()) - && !data.isReloading() + && !data.reloading() && !player.getCooldowns().isOnCooldown(stack.getItem()) && !GunsTool.getGunBooleanTag(tag, "Charging")) { gunMelee = 36; @@ -392,10 +392,10 @@ public class ClientEventHandler { return; } var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); var perk = PerkHelper.getPerkByType(tag, Perk.Type.AMMO); - int mode = data.getFireMode(); + int mode = data.fireMode(); // 精准度 float times = (float) Math.min(Minecraft.getInstance().getTimer().getRealtimeDeltaTicks(), 0.8); @@ -473,9 +473,9 @@ public class ClientEventHandler { && cap != null && !cap.edit && !notInGame() && (!(data.normalReloading() || data.emptyReloading()) - && !data.isReloading() + && !data.reloading() && !GunsTool.getGunBooleanTag(tag, "Charging") - && data.getAmmo() > 0 + && data.ammo() > 0 && !player.getCooldowns().isOnCooldown(stack.getItem()) && !GunsTool.getGunBooleanTag(tag, "NeedBoltAction") && revolverPre(tag)) @@ -552,14 +552,14 @@ public class ClientEventHandler { ItemStack stack = player.getMainHandItem(); var data = GunData.from(stack); if (stack.is(ModTags.Items.NORMAL_GUN)) { - if (data.getAmmo() > 0) { - int mode = data.getFireMode(); + if (data.ammo() > 0) { + int mode = data.fireMode(); if (mode != 2) { holdFire = false; } if (mode == 1) { - if (data.getAmmo() == 1) { + if (data.ammo() == 1) { burstFireAmount = 1; } if (burstFireAmount == 1) { @@ -585,7 +585,7 @@ public class ClientEventHandler { } // 判断是否为栓动武器(BoltActionTime > 0),并在开火后给一个需要上膛的状态 - if (data.boltActionTime() > 0 && data.getAmmo() > (stack.is(ModTags.Items.REVOLVER) ? 0 : 1)) { + if (data.boltActionTime() > 0 && data.ammo() > (stack.is(ModTags.Items.REVOLVER) ? 0 : 1)) { GunsTool.setGunBooleanTag(tag, "NeedBoltAction", true); } @@ -1066,7 +1066,7 @@ public class ClientEventHandler { if (!(entity instanceof Player player)) return; var stack = player.getMainHandItem(); var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); float times = 5 * Minecraft.getInstance().getTimer().getRealtimeDeltaTicks(); double weight = data.weight(); diff --git a/src/main/java/com/atsuishio/superbwarfare/event/GunEventHandler.java b/src/main/java/com/atsuishio/superbwarfare/event/GunEventHandler.java index 2ecbfc0e5..d8ccdeda5 100644 --- a/src/main/java/com/atsuishio/superbwarfare/event/GunEventHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/event/GunEventHandler.java @@ -65,8 +65,8 @@ public class GunEventHandler { ItemStack stack = player.getMainHandItem(); if (stack.is(ModTags.Items.NORMAL_GUN)) { - var tag = gunData.getTag(); - var data = gunData.getData(); + var tag = gunData.tag(); + var data = gunData.data(); if (GunsTool.getGunIntTag(tag, "BoltActionTick") > 0) { data.putInt("BoltActionTick", GunsTool.getGunIntTag(tag, "BoltActionTick") - 1); @@ -92,7 +92,7 @@ public class GunEventHandler { ItemStack stack = player.getMainHandItem(); if (!stack.is(ModTags.Items.GUN)) return; var data = GunData.from(stack); - var tag = data.getTag(); + var tag = data.tag(); if (!player.level().isClientSide) { String origin = stack.getItem().getDescriptionId(); @@ -321,15 +321,15 @@ public class GunEventHandler { ItemStack stack = player.getMainHandItem(); if (!(stack.getItem() instanceof GunItem gunItem)) return; - var tag = gunData.getTag(); - var data = gunData.getData(); + var tag = gunData.tag(); + var data = gunData.data(); // 启动换弹 if (GunsTool.getGunBooleanTag(tag, "StartReload")) { NeoForge.EVENT_BUS.post(new ReloadEvent.Pre(player, stack)); if (gunItem.isOpenBolt(stack)) { - if (gunData.getAmmo() == 0) { + if (gunData.ammo() == 0) { data.putInt("ReloadTime", gunData.emptyReloadTime() + 1); gunData.setReloadState(GunData.ReloadState.EMPTY_RELOADING); playGunEmptyReloadSounds(player); @@ -391,7 +391,7 @@ public class GunEventHandler { if (data.getInt("ReloadTime") == 1) { if (gunItem.isOpenBolt(stack)) { - if (gunData.getAmmo() == 0) { + if (gunData.ammo() == 0) { playGunEmptyReload(player, gunData); } else { playGunNormalReload(player, gunData); @@ -404,8 +404,8 @@ public class GunEventHandler { } public static void playGunNormalReload(Player player, GunData gunData) { - var stack = gunData.getStack(); - var gunItem = gunData.getItem(); + var stack = gunData.stack(); + var gunItem = gunData.item(); if (player.getInventory().hasAnyMatching(item -> item.is(ModItems.CREATIVE_AMMO_BOX.get()))) { gunData.setAmmo(gunData.magazine() + (gunItem.hasBulletInBarrel(stack) ? 1 : 0)); @@ -427,7 +427,7 @@ public class GunEventHandler { } public static void playGunEmptyReload(Player player, GunData gunData) { - ItemStack stack = gunData.getStack(); + ItemStack stack = gunData.stack(); if (player.getInventory().hasAnyMatching(item -> item.is(ModItems.CREATIVE_AMMO_BOX.get()))) { gunData.setAmmo(gunData.magazine()); @@ -502,7 +502,7 @@ public class GunEventHandler { private static void handleGunSingleReload(Player player, GunData gunData) { ItemStack stack = player.getMainHandItem(); if (!(stack.getItem() instanceof GunItem)) return; - var tag = gunData.getTag(); + var tag = gunData.tag(); // 换弹流程计时器 if (tag.getDouble("prepare") > 0) { @@ -529,13 +529,13 @@ public class GunEventHandler { if (tag.getBoolean("start_single_reload")) { NeoForge.EVENT_BUS.post(new ReloadEvent.Pre(player, stack)); - if ((gunData.prepareLoadTime() != 0 && gunData.getAmmo() == 0) || stack.is(ModItems.SECONDARY_CATACLYSM.get())) { + if ((gunData.prepareLoadTime() != 0 && gunData.ammo() == 0) || stack.is(ModItems.SECONDARY_CATACLYSM.get())) { // 此处判断空仓换弹的时候,是否在准备阶段就需要装填一发,如M870 playGunPrepareLoadReloadSounds(player); int prepareLoadTime = gunData.prepareLoadTime(); tag.putInt("prepare_load", prepareLoadTime + 1); player.getCooldowns().addCooldown(stack.getItem(), prepareLoadTime); - } else if (gunData.prepareEmptyTime() != 0 && gunData.getAmmo() == 0) { + } else if (gunData.prepareEmptyTime() != 0 && gunData.ammo() == 0) { // 此处判断空仓换弹,如莫辛纳甘 playGunEmptyPrepareSounds(player); int prepareEmptyTime = gunData.prepareEmptyTime(); @@ -581,13 +581,13 @@ public class GunEventHandler { tag.putBoolean("force_stage3_start", true); } else if (stack.is(ModTags.Items.LAUNCHER) && GunsTool.getGunIntTag(tag, "MaxAmmo") == 0) { tag.putBoolean("force_stage3_start", true); - } else if (stack.is(ModItems.SECONDARY_CATACLYSM.get()) && gunData.getAmmo() >= gunData.magazine()) { + } else if (stack.is(ModItems.SECONDARY_CATACLYSM.get()) && gunData.ammo() >= gunData.magazine()) { tag.putBoolean("force_stage3_start", true); } else { gunData.setReloadStage(2); } } else { - if (stack.is(ModItems.SECONDARY_CATACLYSM.get()) && gunData.getAmmo() >= gunData.magazine()) { + if (stack.is(ModItems.SECONDARY_CATACLYSM.get()) && gunData.ammo() >= gunData.magazine()) { tag.putBoolean("force_stage3_start", true); } else { gunData.setReloadStage(2); @@ -606,7 +606,7 @@ public class GunEventHandler { && gunData.getReloadStage() == 2 && tag.getInt("iterative") == 0 && !tag.getBoolean("stop") - && gunData.getAmmo() < gunData.magazine() + && gunData.ammo() < gunData.magazine() ) { playGunLoopReloadSounds(player); @@ -643,7 +643,7 @@ public class GunEventHandler { // 二阶段结束 if (tag.getInt("iterative") == 1) { // 装满结束 - if (gunData.getAmmo() >= gunData.magazine()) { + if (gunData.ammo() >= gunData.magazine()) { gunData.setReloadStage(3); } @@ -701,7 +701,7 @@ public class GunEventHandler { } public static void singleLoad(Player player, GunData data) { - data.setAmmo(data.getAmmo() + 1); + data.setAmmo(data.ammo() + 1); if (!InventoryTool.hasCreativeAmmoBox(player)) { var cap = player.getCapability(ModCapabilities.PLAYER_VARIABLE); @@ -842,8 +842,8 @@ public class GunEventHandler { */ private static void handleSentinelCharge(Player player, GunData gunData) { if (!(player.getMainHandItem().getItem() instanceof GunItem)) return; - var tag = gunData.getTag(); - final var data = gunData.getData(); + var tag = gunData.tag(); + final var data = gunData.data(); // 启动换弹 if (GunsTool.getGunBooleanTag(tag, "StartCharge")) { diff --git a/src/main/java/com/atsuishio/superbwarfare/event/LivingEventHandler.java b/src/main/java/com/atsuishio/superbwarfare/event/LivingEventHandler.java index be2a123a8..a02e949a9 100644 --- a/src/main/java/com/atsuishio/superbwarfare/event/LivingEventHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/event/LivingEventHandler.java @@ -217,14 +217,14 @@ public class LivingEventHandler { // 先处理发射器类武器或高爆弹的爆炸伤害 if (source.is(ModDamageTypes.PROJECTILE_BOOM)) { if (stack.is(ModTags.Items.LAUNCHER) || PerkHelper.getItemPerkLevel(ModPerks.HE_BULLET.get(), tag) > 0) { - data.setExp(data.getExp() + amount); + data.setExp(data.exp() + amount); } } // 再判断是不是枪械能造成的伤害 if (!DamageTypeTool.isGunDamage(source)) return; - data.setExp(data.getExp() + amount); + data.setExp(data.exp() + amount); data.save(); } @@ -243,27 +243,27 @@ public class LivingEventHandler { // 先处理发射器类武器或高爆弹的爆炸伤害 if (source.is(ModDamageTypes.PROJECTILE_BOOM)) { if (stack.is(ModTags.Items.LAUNCHER) || PerkHelper.getItemPerkLevel(ModPerks.HE_BULLET.get(), tag) > 0) { - data.setExp(data.getExp() + amount); + data.setExp(data.exp() + amount); } } // 再判断是不是枪械能造成的伤害 if (DamageTypeTool.isGunDamage(source)) { - data.setExp(data.getExp() + amount); + data.setExp(data.exp() + amount); } // 提升武器等级 - int level = data.getLevel(); - double exp = data.getExp(); + int level = data.level(); + double exp = data.exp(); double upgradeExpNeeded = 20 * Math.pow(level, 2) + 160 * level + 20; while (exp >= upgradeExpNeeded) { exp -= upgradeExpNeeded; - level = data.getLevel() + 1; + level = data.level() + 1; upgradeExpNeeded = 20 * Math.pow(level, 2) + 160 * level + 20; data.setExp(exp); data.setLevel(level); - data.setUpgradePoint(data.getUpgradePoint() + 0.5); + data.setUpgradePoint(data.upgradePoint() + 0.5); } data.save(); } @@ -277,17 +277,17 @@ public class LivingEventHandler { if (event.getEntity() instanceof TargetEntity) return; var data = GunData.from(stack); - int level = data.getLevel(); - double exp = data.getExp(); + int level = data.level(); + double exp = data.exp(); double upgradeExpNeeded = 20 * Math.pow(level, 2) + 160 * level + 20; while (exp >= upgradeExpNeeded) { exp -= upgradeExpNeeded; - level = data.getLevel() + 1; + level = data.level() + 1; upgradeExpNeeded = 20 * Math.pow(level, 2) + 160 * level + 20; data.setExp(exp); data.setLevel(level); - data.setUpgradePoint(data.getUpgradePoint() + 0.5); + data.setUpgradePoint(data.upgradePoint() + 0.5); } data.save(); } @@ -357,8 +357,8 @@ public class LivingEventHandler { stopGunReloadSound(serverPlayer, oldGun); var oldData = GunData.from(oldStack); - oldTag = oldData.getTag(); - var data = oldData.getData(); + oldTag = oldData.tag(); + var data = oldData.data(); if (oldData.boltActionTime() > 0) { data.putInt("BoltActionTick", 0); @@ -395,7 +395,7 @@ public class LivingEventHandler { if (newStack.getItem() instanceof GunItem) { var newData = GunData.from(newStack); - newTag = newData.getTag(); + newTag = newData.tag(); player.getPersistentData().putDouble("noRun", 40); newTag.putBoolean("draw", true); @@ -577,7 +577,7 @@ public class LivingEventHandler { private static void handleClipPerks(ItemStack stack) { var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); int healClipLevel = PerkHelper.getItemPerkLevel(ModPerks.HEAL_CLIP.get(), tag); if (healClipLevel != 0) { GunsTool.setPerkIntTag(tag, "HealClipTime", 80 + healClipLevel * 20); @@ -592,7 +592,7 @@ public class LivingEventHandler { private static void handleKillClipDamage(ItemStack stack, LivingIncomingDamageEvent event) { var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); if (GunsTool.getPerkIntTag(tag, "KillClipTime") > 0) { int level = PerkHelper.getItemPerkLevel(ModPerks.KILL_CLIP.get(), tag); if (level == 0) { @@ -605,7 +605,7 @@ public class LivingEventHandler { private static void handleGutshotStraightDamage(ItemStack stack, LivingIncomingDamageEvent event) { var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); int level = PerkHelper.getItemPerkLevel(ModPerks.GUTSHOT_STRAIGHT.get(), tag); if (level == 0) return; @@ -614,7 +614,7 @@ public class LivingEventHandler { private static void handleKillingTallyDamage(ItemStack stack, LivingIncomingDamageEvent event) { var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); int level = PerkHelper.getItemPerkLevel(ModPerks.KILLING_TALLY.get(), tag); if (level == 0) return; @@ -628,7 +628,7 @@ public class LivingEventHandler { private static void handleKillingTallyAddCount(ItemStack stack) { var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); int level = PerkHelper.getItemPerkLevel(ModPerks.KILLING_TALLY.get(), tag); if (level != 0) { GunsTool.setPerkIntTag(tag, "KillingTally", Math.min(3, GunsTool.getPerkIntTag(tag, "KillingTally") + 1)); @@ -638,7 +638,7 @@ public class LivingEventHandler { private static void handleFourthTimesCharm(ItemStack stack) { var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); int level = PerkHelper.getItemPerkLevel(ModPerks.FOURTH_TIMES_CHARM.get(), tag); if (level == 0) return; @@ -657,7 +657,7 @@ public class LivingEventHandler { private static void handleSubsistence(ItemStack stack, Player player) { var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); int level = PerkHelper.getItemPerkLevel(ModPerks.SUBSISTENCE.get(), tag); if (level == 0) return; @@ -667,7 +667,7 @@ public class LivingEventHandler { if (cap == null) return; int mag = data.magazine(); - int ammo = data.getAmmo(); + int ammo = data.ammo(); int ammoReload = (int) Math.min(mag, mag * rate); int ammoNeed = Math.min(mag - ammo, ammoReload); @@ -697,7 +697,7 @@ public class LivingEventHandler { private static void handleFieldDoctor(ItemStack stack, LivingIncomingDamageEvent event, Player player) { var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); int level = PerkHelper.getItemPerkLevel(ModPerks.FIELD_DOCTOR.get(), tag); if (level == 0) return; @@ -709,7 +709,7 @@ public class LivingEventHandler { private static void handleHeadSeekerTime(ItemStack stack) { var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); int level = PerkHelper.getItemPerkLevel(ModPerks.HEAD_SEEKER.get(), tag); if (level == 0) return; @@ -719,7 +719,7 @@ public class LivingEventHandler { private static void handleHeadSeekerDamage(ItemStack stack, LivingIncomingDamageEvent event) { var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); int level = PerkHelper.getItemPerkLevel(ModPerks.HEAD_SEEKER.get(), tag); if (level == 0) return; @@ -730,7 +730,7 @@ public class LivingEventHandler { private static void handleDesperado(ItemStack stack) { var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); int level = PerkHelper.getItemPerkLevel(ModPerks.DESPERADO.get(), tag); if (level == 0) return; diff --git a/src/main/java/com/atsuishio/superbwarfare/event/PlayerEventHandler.java b/src/main/java/com/atsuishio/superbwarfare/event/PlayerEventHandler.java index 1a2344fa7..7c5051660 100644 --- a/src/main/java/com/atsuishio/superbwarfare/event/PlayerEventHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/event/PlayerEventHandler.java @@ -7,6 +7,7 @@ import com.atsuishio.superbwarfare.init.ModItems; import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModTags; import com.atsuishio.superbwarfare.item.gun.GunData; +import com.atsuishio.superbwarfare.item.gun.GunItem; import com.atsuishio.superbwarfare.tools.*; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; @@ -29,16 +30,16 @@ public class PlayerEventHandler { @SubscribeEvent public static void onPlayerLoggedIn(PlayerEvent.PlayerLoggedInEvent event) { Player player = event.getEntity(); - ItemStack stack = player.getMainHandItem(); - var tag = NBTTool.getTag(stack); - if (stack.is(ModItems.MONITOR.get()) && tag.getBoolean("Using")) { + ItemStack mainStack = player.getMainHandItem(); + var tag = NBTTool.getTag(mainStack); + if (mainStack.is(ModItems.MONITOR.get()) && tag.getBoolean("Using")) { tag.putBoolean("Using", false); - NBTTool.saveTag(stack, tag); + NBTTool.saveTag(mainStack, tag); } - for (ItemStack pStack : player.getInventory().items) { - if (pStack.is(ModTags.Items.GUN)) { + for (ItemStack stack : player.getInventory().items) { + if (stack.getItem() instanceof GunItem) { var data = GunData.from(stack); - tag = data.getTag(); + tag = data.tag(); tag.putBoolean("draw", true); @@ -65,7 +66,7 @@ public class PlayerEventHandler { for (ItemStack stack : player.getInventory().items) { if (stack.is(ModTags.Items.GUN)) { var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); tag.putBoolean("draw", true); @@ -203,9 +204,9 @@ public class PlayerEventHandler { ItemStack stack = player.getMainHandItem(); var data = GunData.from(stack); - var tag = data.getTag(); + var tag = data.tag(); - if ((stack.is(ModItems.RPG.get()) || stack.is(ModItems.BOCEK.get())) && data.getAmmo() == 1) { + if ((stack.is(ModItems.RPG.get()) || stack.is(ModItems.BOCEK.get())) && data.ammo() == 1) { tag.putDouble("empty", 0); data.save(); } @@ -218,7 +219,7 @@ public class PlayerEventHandler { if (cap == null) return; var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); if (cap.bowPullHold) { if (stack.getItem() == ModItems.BOCEK.get() @@ -273,7 +274,7 @@ public class PlayerEventHandler { for (ItemStack stack : player.getInventory().items) { if (stack.is(ModTags.Items.GUN)) { var data = GunData.from(stack); - var tag = data.getTag(); + var tag = data.tag(); if (!InventoryTool.hasCreativeAmmoBox(player)) { var cap = player.getCapability(ModCapabilities.PLAYER_VARIABLE); @@ -295,19 +296,19 @@ public class PlayerEventHandler { GunsTool.reload(player, stack, data, AmmoType.HEAVY); } - if (stack.getItem() == ModItems.TASER.get() && GunsTool.getGunIntTag(tag, "MaxAmmo") > 0 && GunsTool.getGunIntTag(tag, "Ammo") == 0) { + if (stack.getItem() == ModItems.TASER.get() && GunsTool.getGunIntTag(tag, "MaxAmmo") > 0 && data.ammo() == 0) { data.setAmmo(1); player.getInventory().clearOrCountMatchingItems(p -> p.getItem() == ModItems.TASER_ELECTRODE.get(), 1, player.inventoryMenu.getCraftSlots()); } - if (stack.getItem() == ModItems.M_79.get() && GunsTool.getGunIntTag(tag, "MaxAmmo") > 0 && GunsTool.getGunIntTag(tag, "Ammo") == 0) { + if (stack.getItem() == ModItems.M_79.get() && GunsTool.getGunIntTag(tag, "MaxAmmo") > 0 && data.ammo() == 0) { data.setAmmo(1); player.getInventory().clearOrCountMatchingItems(p -> p.getItem() == ModItems.GRENADE_40MM.get(), 1, player.inventoryMenu.getCraftSlots()); } - if (stack.getItem() == ModItems.RPG.get() && GunsTool.getGunIntTag(tag, "MaxAmmo") > 0 && GunsTool.getGunIntTag(tag, "Ammo") == 0) { + if (stack.getItem() == ModItems.RPG.get() && GunsTool.getGunIntTag(tag, "MaxAmmo") > 0 && data.ammo() == 0) { data.setAmmo(1); player.getInventory().clearOrCountMatchingItems(p -> p.getItem() == ModItems.ROCKET.get(), 1, player.inventoryMenu.getCraftSlots()); } - if (stack.getItem() == ModItems.JAVELIN.get() && GunsTool.getGunIntTag(tag, "MaxAmmo") > 0 && GunsTool.getGunIntTag(tag, "Ammo") == 0) { + if (stack.getItem() == ModItems.JAVELIN.get() && GunsTool.getGunIntTag(tag, "MaxAmmo") > 0 && data.ammo() == 0) { data.setAmmo(1); player.getInventory().clearOrCountMatchingItems(p -> p.getItem() == ModItems.JAVELIN_MISSILE.get(), 1, player.inventoryMenu.getCraftSlots()); } @@ -364,7 +365,7 @@ public class PlayerEventHandler { ItemStack output = left.copy(); var data = GunData.from(output); - data.setUpgradePoint(data.getUpgradePoint() + 1); + data.setUpgradePoint(data.upgradePoint() + 1); data.save(); event.setOutput(output); diff --git a/src/main/java/com/atsuishio/superbwarfare/event/ReloadEventHandler.java b/src/main/java/com/atsuishio/superbwarfare/event/ReloadEventHandler.java index 4dfbcd3b3..7afd5faab 100644 --- a/src/main/java/com/atsuishio/superbwarfare/event/ReloadEventHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/event/ReloadEventHandler.java @@ -50,7 +50,7 @@ public class ReloadEventHandler { private static void handleHealClipPre(ItemStack stack) { var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); int time = GunsTool.getPerkIntTag(tag, "HealClipTime"); if (time > 0) { GunsTool.setPerkIntTag(tag, "HealClipTime", 0); @@ -63,7 +63,7 @@ public class ReloadEventHandler { private static void handleHealClipPost(Player player, ItemStack stack) { var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); if (!GunsTool.getPerkBooleanTag(tag, "HealClip")) return; int healClipLevel = PerkHelper.getItemPerkLevel(ModPerks.HEAL_CLIP.get(), tag); @@ -80,7 +80,7 @@ public class ReloadEventHandler { private static void handleKillClipPre(ItemStack stack) { var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); int time = GunsTool.getPerkIntTag(tag, "KillClipReloadTime"); if (time > 0) { GunsTool.setPerkIntTag(tag, "KillClipReloadTime", 0); @@ -93,7 +93,7 @@ public class ReloadEventHandler { private static void handleKillClipPost(ItemStack stack) { var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); if (!GunsTool.getPerkBooleanTag(tag, "KillClip")) return; int level = PerkHelper.getItemPerkLevel(ModPerks.KILL_CLIP.get(), tag); @@ -103,7 +103,7 @@ public class ReloadEventHandler { private static void handleKillingTallyPre(ItemStack stack) { var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); int level = PerkHelper.getItemPerkLevel(ModPerks.KILLING_TALLY.get(), tag); if (level == 0) return; @@ -113,7 +113,7 @@ public class ReloadEventHandler { private static void handleDesperadoPre(ItemStack stack) { var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); int time = GunsTool.getPerkIntTag(tag, "DesperadoTime"); if (time > 0) { GunsTool.setPerkIntTag(tag, "DesperadoTime", 0); @@ -126,7 +126,7 @@ public class ReloadEventHandler { private static void handleDesperadoPost(ItemStack stack) { var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); if (!GunsTool.getPerkBooleanTag(tag, "Desperado")) return; int level = PerkHelper.getItemPerkLevel(ModPerks.DESPERADO.get(), tag); diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/GunData.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/GunData.java index 45d04f405..46745592a 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/GunData.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/GunData.java @@ -8,29 +8,19 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.component.CustomData; import java.util.HashMap; +import java.util.UUID; import java.util.WeakHashMap; public class GunData { private final ItemStack stack; private final GunItem item; - private CompoundTag tag; - private CompoundTag data; + private final CompoundTag tag; + private final CompoundTag data; + private final CompoundTag perk; private final String id; private static final WeakHashMap dataCache = new WeakHashMap<>(); - private void loadTags() { - var customData = stack.get(DataComponents.CUSTOM_DATA); - this.tag = customData != null ? customData.copyTag() : new CompoundTag(); - - if (!tag.contains("GunData")) { - data = new CompoundTag(); - tag.put("GunData", data); - } else { - data = tag.getCompound("GunData"); - } - } - private GunData(ItemStack stack) { if (!(stack.getItem() instanceof GunItem gunItem)) { throw new IllegalArgumentException("stack is not GunItem!"); @@ -39,7 +29,34 @@ public class GunData { this.stack = stack; var id = stack.getDescriptionId(); this.id = id.substring(id.lastIndexOf(".") + 1); - loadTags(); + + var customData = stack.get(DataComponents.CUSTOM_DATA); + this.tag = customData != null ? customData.copyTag() : new CompoundTag(); + + if (!tag.contains("GunData")) { + data = new CompoundTag(); + tag.put("GunData", data); + } else { + data = tag.getCompound("GunData"); + } + + if (!tag.contains("PerkData")) { + perk = new CompoundTag(); + tag.put("PerkData", perk); + } else { + perk = tag.getCompound("PerkData"); + } + } + + public boolean initialized() { + return data.hasUUID("UUID"); + } + + public void initialize() { + if (initialized()) return; + + data.putUUID("UUID", UUID.randomUUID()); + save(); } public static GunData from(ItemStack stack) { @@ -49,22 +66,26 @@ public class GunData { return dataCache.get(stack); } - public GunItem getItem() { + public GunItem item() { return item; } - public ItemStack getStack() { + public ItemStack stack() { return stack; } - public CompoundTag getTag() { + public CompoundTag tag() { return tag; } - public CompoundTag getData() { + public CompoundTag data() { return data; } + public CompoundTag perk() { + return perk; + } + private double getGunData(String key) { return getGunData(key, 0); } @@ -144,7 +165,7 @@ public class GunData { if (normalReload == 0) return emptyReload; if (emptyReload == 0) return normalReload; - return getAmmo() < magazine() ? normalReload : emptyReload; + return ammo() < magazine() ? normalReload : emptyReload; } public double soundRadius() { @@ -171,7 +192,7 @@ public class GunData { return item.getCustomWeight(stack); } - public int getAmmo() { + public int ammo() { return data.getInt("Ammo"); } @@ -179,7 +200,7 @@ public class GunData { data.putInt("Ammo", ammo); } - public boolean isReloading() { + public boolean reloading() { return getReloadState() != ReloadState.NOT_RELOADING; } @@ -209,7 +230,7 @@ public class GunData { return (int) getGunData("BurstAmount"); } - public int getFireMode() { + public int fireMode() { if (data.contains("FireMode")) { return data.getInt("FireMode"); } @@ -220,7 +241,7 @@ public class GunData { data.putInt("FireMode", fireMode); } - public int getLevel() { + public int level() { return data.getInt("Level"); } @@ -228,7 +249,7 @@ public class GunData { data.putInt("Level", level); } - public double getExp() { + public double exp() { return data.getDouble("Exp"); } @@ -236,7 +257,7 @@ public class GunData { data.putDouble("Exp", exp); } - public double getUpgradePoint() { + public double upgradePoint() { return data.getDouble("UpgradePoint"); } diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/GunEvents.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/GunEvents.java index ae04281d5..0151304a5 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/GunEvents.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/GunEvents.java @@ -13,7 +13,7 @@ public class GunEvents { var stack = event.getItemEntity().getItem(); if (stack.is(ModTags.Items.GUN)) { var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); tag.putBoolean("draw", true); data.save(); } 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 c69a9c411..bc95452fc 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/GunItem.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/GunItem.java @@ -66,29 +66,19 @@ public abstract class GunItem extends Item implements CustomRendererItem { ) return; var data = GunData.from(stack); - var tag = data.getTag(); - - if (tag.getString("id").isEmpty()) { - var id = stack.getDescriptionId(); - tag.putString("id", id.substring(id.lastIndexOf(".") + 1)); - } - - if (!tag.getBoolean("init")) { - var name = this.getDescriptionId().substring(this.getDescriptionId().lastIndexOf('.') + 1); + var tag = data.tag(); + if (!data.initialized()) { + data.initialize(); if (level.getServer() != null && entity instanceof Player player && player.isCreative()) { - GunsTool.initCreativeGun(stack, name); - } else { - GunsTool.initGun(tag, name); + data.setAmmo(data.magazine()); } - GunsTool.generateAndSetUUID(tag); - tag.putBoolean("init", true); } tag.putBoolean("draw", false); handleGunPerks(data); var hasBulletInBarrel = gunItem.hasBulletInBarrel(stack); - var ammoCount = data.getAmmo(); + var ammoCount = data.ammo(); var magazine = data.magazine(); if ((hasBulletInBarrel && ammoCount > magazine + 1) || (!hasBulletInBarrel && ammoCount > magazine)) { @@ -109,7 +99,7 @@ public abstract class GunItem extends Item implements CustomRendererItem { } capability.syncPlayerVariables(entity); } - GunsTool.setGunIntTag(tag, "Ammo", magazine + (hasBulletInBarrel ? 1 : 0)); + data.setAmmo(magazine + (hasBulletInBarrel ? 1 : 0)); } data.save(); } @@ -174,7 +164,7 @@ public abstract class GunItem extends Item implements CustomRendererItem { private void handleGunPerks(GunData data) { - var tag = data.getTag(); + var tag = data.tag(); reducePerkTagCoolDown(tag, "HealClipTime", "KillClipReloadTime", "KillClipTime", "FourthTimesCharmTick", "HeadSeeker", "DesperadoTime", "DesperadoTimePost"); @@ -186,7 +176,7 @@ public abstract class GunItem extends Item implements CustomRendererItem { GunsTool.setPerkIntTag(tag, "FourthTimesCharmCount", 0); int mag = data.magazine(); - GunsTool.setGunIntTag(tag, "Ammo", Math.min(mag, GunsTool.getGunIntTag(tag, "Ammo") + 2)); + data.setAmmo(Math.min(mag, data.ammo() + 2)); } } } @@ -407,7 +397,7 @@ public abstract class GunItem extends Item implements CustomRendererItem { * 获取额外总重量加成 */ public double getCustomWeight(ItemStack stack) { - CompoundTag tag = GunData.from(stack).getTag().getCompound("Attachments"); + CompoundTag tag = GunData.from(stack).tag().getCompound("Attachments"); double scopeWeight = switch (tag.getInt("Scope")) { case 1 -> 0.5; @@ -454,7 +444,7 @@ public abstract class GunItem extends Item implements CustomRendererItem { * 获取额外音效半径加成 */ public double getCustomSoundRadius(ItemStack stack) { - return GunData.from(stack).getTag().getCompound("Attachments").getInt("Barrel") == 2 ? 0.6 : 1; + return GunData.from(stack).tag().getCompound("Attachments").getInt("Barrel") == 2 ? 0.6 : 1; } public int getCustomBoltActionTime(ItemStack stack) { 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 143c886ab..43c731906 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 @@ -106,7 +106,7 @@ public class Trachelium extends GunItem implements GeoItem { ItemStack stack = player.getMainHandItem(); if (!stack.is(ModTags.Items.GUN)) return PlayState.STOP; var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); boolean stock = GunsTool.getAttachmentType(tag, GunsTool.AttachmentType.STOCK) == 2; boolean grip = GunsTool.getAttachmentType(tag, GunsTool.AttachmentType.GRIP) > 0 || GunsTool.getAttachmentType(tag, GunsTool.AttachmentType.SCOPE) > 0; @@ -237,10 +237,8 @@ public class Trachelium extends GunItem implements GeoItem { public void inventoryTick(ItemStack stack, Level world, Entity entity, int slot, boolean selected) { super.inventoryTick(stack, world, entity, slot, selected); final var tag = NBTTool.getTag(stack); - GunsTool.setGunIntTag(tag, "BoltActionTime", tag.getBoolean("DA") ? 12 : 0); int scopeType = GunsTool.getAttachmentType(tag, GunsTool.AttachmentType.SCOPE); - int gripType = GunsTool.getAttachmentType(tag, GunsTool.AttachmentType.GRIP); int stockType = GunsTool.getAttachmentType(tag, GunsTool.AttachmentType.STOCK); CompoundTag tags = tag.getCompound("Attachments"); @@ -255,7 +253,7 @@ public class Trachelium extends GunItem implements GeoItem { @Override public int getCustomBoltActionTime(ItemStack stack) { - return GunData.from(stack).getTag().getBoolean("DA") ? 12 : 0; + return GunData.from(stack).tag().getBoolean("DA") ? 12 : 0; } @Override diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/heavy/Ntw20Item.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/heavy/Ntw20Item.java index 4a0d866b6..5613e1997 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/heavy/Ntw20Item.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/heavy/Ntw20Item.java @@ -57,7 +57,7 @@ public class Ntw20Item extends GunItem implements GeoItem { ItemStack stack = player.getMainHandItem(); if (!stack.is(ModTags.Items.GUN)) return PlayState.STOP; var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); if (GunsTool.getGunIntTag(tag, "BoltActionTick") > 0) { return event.setAndContinue(RawAnimation.begin().thenPlay("animation.ntw_20.shift")); @@ -80,7 +80,7 @@ public class Ntw20Item extends GunItem implements GeoItem { ItemStack stack = player.getMainHandItem(); if (!stack.is(ModTags.Items.GUN)) return PlayState.STOP; var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); if (player.isSprinting() && player.onGround() && player.getPersistentData().getDouble("noRun") == 0 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 66dfbb0ca..7f7a72b5d 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 @@ -134,7 +134,7 @@ public class JavelinItem extends GunItem implements GeoItem, SpecialFireWeapon { public void inventoryTick(ItemStack stack, Level world, Entity entity, int slot, boolean selected) { super.inventoryTick(stack, world, entity, slot, selected); var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); if (entity instanceof Player player && selected) { GunsTool.setGunIntTag(tag, "MaxAmmo", getAmmoCount(player)); @@ -242,7 +242,7 @@ public class JavelinItem extends GunItem implements GeoItem, SpecialFireWeapon { Level level = player.level(); ItemStack stack = player.getMainHandItem(); var data = GunData.from(stack); - CompoundTag tag = data.getTag(); + CompoundTag tag = data.tag(); if (tag.getInt("SeekTime") < 20) return; @@ -289,14 +289,14 @@ public class JavelinItem extends GunItem implements GeoItem, SpecialFireWeapon { } player.getCooldowns().addCooldown(stack.getItem(), 10); - data.setAmmo(data.getAmmo() - 1); + data.setAmmo(data.ammo() - 1); data.save(); } @Override public void fireOnRelease(Player player, final GunData data) { fire(player); - var tag = data.getTag(); + var tag = data.tag(); tag.putBoolean("Seeking", false); tag.putInt("SeekTime", 0); tag.putString("TargetEntity", "none"); @@ -308,10 +308,10 @@ public class JavelinItem extends GunItem implements GeoItem, SpecialFireWeapon { @Override public void fireOnPress(Player player, final GunData data) { - var tag = data.getTag(); + var tag = data.tag(); var cap = player.getCapability(ModCapabilities.PLAYER_VARIABLE); - if (cap != null && !cap.zoom || data.getAmmo() <= 0) return; + if (cap != null && !cap.zoom || data.ammo() <= 0) return; Entity seekingEntity = SeekTool.seekEntity(player, player.level(), 512, 8); 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 ba5d66c81..c9029bdfa 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 @@ -129,7 +129,7 @@ public class M79Item extends GunItem implements GeoItem, SpecialFireWeapon { super.inventoryTick(stack, world, entity, slot, selected); if (entity instanceof Player player) { var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); GunsTool.setGunIntTag(tag, "MaxAmmo", getAmmoCount(player)); data.save(); } @@ -171,11 +171,11 @@ public class M79Item extends GunItem implements GeoItem, SpecialFireWeapon { @Override public void fireOnPress(Player player, final GunData data) { - if (data.isReloading()) return; - ItemStack stack = data.getStack(); - if (player.getCooldowns().isOnCooldown(stack.getItem()) || data.getAmmo() <= 0) return; + if (data.reloading()) return; + ItemStack stack = data.stack(); + if (player.getCooldowns().isOnCooldown(stack.getItem()) || data.ammo() <= 0) return; - var tag = data.getTag(); + var tag = data.tag(); var cap = player.getCapability(ModCapabilities.PLAYER_VARIABLE); boolean zooming = cap != null && cap.zoom; double spread = data.spread(); @@ -196,7 +196,7 @@ public class M79Item extends GunItem implements GeoItem, SpecialFireWeapon { gunGrenadeEntity.setNoGravity(PerkHelper.getPerkByType(tag, Perk.Type.AMMO) == ModPerks.MICRO_MISSILE.get()); float velocity = (float) data.velocity(); - int perkLevel = PerkHelper.getItemPerkLevel(ModPerks.MICRO_MISSILE.get(), data.getTag()); + int perkLevel = PerkHelper.getItemPerkLevel(ModPerks.MICRO_MISSILE.get(), data.tag()); if (perkLevel > 0) { gunGrenadeEntity.setExplosionRadius((float) data.explosionRadius() * 0.5f); gunGrenadeEntity.setDamage((float) data.explosionDamage() * (1.1f + perkLevel * 0.1f)); @@ -224,6 +224,6 @@ public class M79Item extends GunItem implements GeoItem, SpecialFireWeapon { } player.getCooldowns().addCooldown(stack.getItem(), 2); - data.setAmmo(data.getAmmo() - 1); + data.setAmmo(data.ammo() - 1); } } \ 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 000c4b7b6..9da1c131f 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 @@ -133,11 +133,11 @@ public class RpgItem extends GunItem implements GeoItem, SpecialFireWeapon { @ParametersAreNonnullByDefault public void inventoryTick(ItemStack stack, Level world, Entity entity, int slot, boolean selected) { var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); if (tag.getBoolean("draw")) { tag.putBoolean("draw", false); - if (GunsTool.getGunIntTag(tag, "Ammo") == 0) { + if (data.ammo() == 0) { tag.putDouble("empty", 1); } } @@ -183,11 +183,11 @@ public class RpgItem extends GunItem implements GeoItem, SpecialFireWeapon { public void fireOnPress(Player player, final GunData data) { Level level = player.level(); ItemStack stack = player.getMainHandItem(); - var tag = data.getTag(); + var tag = data.tag(); - if (data.isReloading() + if (data.reloading() || player.getCooldowns().isOnCooldown(stack.getItem()) - || data.getAmmo() <= 0 + || data.ammo() <= 0 ) return; var cap = player.getCapability(ModCapabilities.PLAYER_VARIABLE); @@ -240,12 +240,12 @@ public class RpgItem extends GunItem implements GeoItem, SpecialFireWeapon { PacketDistributor.sendToPlayer(serverPlayer, new ShootClientMessage(10)); } - if (data.getAmmo() == 1) { + if (data.ammo() == 1) { tag.putBoolean("empty", true); GunsTool.setGunBooleanTag(tag, "CloseHammer", true); } player.getCooldowns().addCooldown(stack.getItem(), 10); - data.setAmmo(data.getAmmo() - 1); + data.setAmmo(data.ammo() - 1); } } \ No newline at end of file diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/launcher/SecondaryCataclysm.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/launcher/SecondaryCataclysm.java index 8e41d2a7c..60d8ea69c 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/launcher/SecondaryCataclysm.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/launcher/SecondaryCataclysm.java @@ -88,7 +88,7 @@ public class SecondaryCataclysm extends GunItem implements GeoItem, SpecialFireW ItemStack stack = player.getMainHandItem(); if (!stack.is(ModTags.Items.GUN)) return PlayState.STOP; var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); if (data.getReloadStage() == 1 && tag.getDouble("prepare_load") > 0) { return event.setAndContinue(RawAnimation.begin().thenPlay("animation.sc.prepare")); @@ -128,7 +128,7 @@ public class SecondaryCataclysm extends GunItem implements GeoItem, SpecialFireW && data.getReloadStage() != 3 && ClientEventHandler.drawTime < 0.01 && ClientEventHandler.gunMelee == 0 - && !data.isReloading() + && !data.reloading() ) { if (player.hasEffect(MobEffects.MOVEMENT_SPEED)) { return event.setAndContinue(RawAnimation.begin().thenLoop("animation.sc.run_fast")); @@ -181,7 +181,7 @@ public class SecondaryCataclysm extends GunItem implements GeoItem, SpecialFireW if (entity instanceof Player player) { var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); GunsTool.setGunIntTag(tag, "MaxAmmo", getAmmoCount(player)); data.save(); } @@ -270,11 +270,11 @@ public class SecondaryCataclysm extends GunItem implements GeoItem, SpecialFireW @Override public void fireOnPress(Player player, final GunData data) { - if (data.isReloading()) return; - ItemStack stack = data.getStack(); - if (player.getCooldowns().isOnCooldown(stack.getItem()) || data.getAmmo() <= 0) return; + if (data.reloading()) return; + ItemStack stack = data.stack(); + if (player.getCooldowns().isOnCooldown(stack.getItem()) || data.ammo() <= 0) return; - var tag = data.getTag(); + var tag = data.tag(); var cap = player.getCapability(ModCapabilities.PLAYER_VARIABLE); boolean zooming = cap != null && cap.zoom; double spread = data.spread(); @@ -301,7 +301,7 @@ public class SecondaryCataclysm extends GunItem implements GeoItem, SpecialFireW gunGrenadeEntity.charged(isChargedFire); float velocity = (float) data.velocity(); - int perkLevel = PerkHelper.getItemPerkLevel(ModPerks.MICRO_MISSILE.get(), data.getTag()); + int perkLevel = PerkHelper.getItemPerkLevel(ModPerks.MICRO_MISSILE.get(), data.tag()); if (perkLevel > 0) { gunGrenadeEntity.setExplosionRadius((float) data.explosionRadius() * 0.5f); gunGrenadeEntity.setDamage((float) data.damage() * (1.1f + perkLevel * 0.1f)); @@ -341,7 +341,7 @@ public class SecondaryCataclysm extends GunItem implements GeoItem, SpecialFireW PacketDistributor.sendToPlayer(serverPlayer, new ShootClientMessage(10)); } - data.setAmmo(data.getAmmo() - 1); + data.setAmmo(data.ammo() - 1); player.getCooldowns().addCooldown(stack.getItem(), 6); } 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 b4d20a71a..fb636b797 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 @@ -108,11 +108,11 @@ public class M60Item extends GunItem implements GeoItem { @ParametersAreNonnullByDefault public void inventoryTick(ItemStack stack, Level level, Entity entity, int slot, boolean selected) { var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); if (tag.getBoolean("draw")) { tag.putBoolean("draw", false); - if (GunsTool.getGunIntTag(tag, "Ammo") <= 5) { + if (data.ammo() <= 5) { GunsTool.setGunBooleanTag(tag, "HideBulletChain", true); } data.save(); diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/machinegun/MinigunItem.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/machinegun/MinigunItem.java index 99f9aa8fc..3681bbbb8 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/machinegun/MinigunItem.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/machinegun/MinigunItem.java @@ -37,7 +37,7 @@ import javax.annotation.ParametersAreNonnullByDefault; public class MinigunItem extends GunItem implements GeoItem { @Override public int getCustomRPM(ItemStack stack) { - return GunData.from(stack).getData().getInt("CustomRPM"); + return GunData.from(stack).data().getInt("CustomRPM"); } private static final String TAG_HEAT = "heat"; @@ -129,7 +129,7 @@ public class MinigunItem extends GunItem implements GeoItem { } var data = GunData.from(stack); - var tag = data.getTag(); + var tag = data.tag(); if (entity instanceof ServerPlayer serverPlayer && entity.level() instanceof ServerLevel serverLevel && tag.getDouble("heat") > 4 && entity.isInWaterOrRain()) { if (entity.isInWater()) { ParticleTool.sendParticle(serverLevel, ParticleTypes.BUBBLE_COLUMN_UP, 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 3fcbfea5c..82b1b0c8f 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 @@ -57,7 +57,7 @@ public class AK12Item extends GunItem implements GeoItem { ItemStack stack = player.getMainHandItem(); if (!stack.is(ModTags.Items.GUN)) return PlayState.STOP; var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); boolean drum = GunsTool.getAttachmentType(tag, GunsTool.AttachmentType.MAGAZINE) == 2; boolean grip = GunsTool.getAttachmentType(tag, GunsTool.AttachmentType.GRIP) == 1 || GunsTool.getAttachmentType(tag, GunsTool.AttachmentType.GRIP) == 2; 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 40bcd4dd4..ea4553c95 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 @@ -57,7 +57,7 @@ public class AK47Item extends GunItem implements GeoItem { ItemStack stack = player.getMainHandItem(); if (!stack.is(ModTags.Items.GUN)) return PlayState.STOP; var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); boolean drum = GunsTool.getAttachmentType(tag, GunsTool.AttachmentType.MAGAZINE) == 2; boolean grip = GunsTool.getAttachmentType(tag, GunsTool.AttachmentType.GRIP) == 1 || GunsTool.getAttachmentType(tag, GunsTool.AttachmentType.GRIP) == 2; 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 6bd01f9ff..3d02c1f47 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 @@ -52,7 +52,7 @@ public class Hk416Item extends GunItem implements GeoItem { ItemStack stack = player.getMainHandItem(); if (!stack.is(ModTags.Items.GUN)) return PlayState.STOP; var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); boolean drum = GunsTool.getAttachmentType(tag, GunsTool.AttachmentType.MAGAZINE) == 2; boolean grip = GunsTool.getAttachmentType(tag, GunsTool.AttachmentType.GRIP) == 1 || GunsTool.getAttachmentType(tag, GunsTool.AttachmentType.GRIP) == 2; 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 4a8a8ee4c..4f15284ab 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 @@ -53,7 +53,7 @@ public class M4Item extends GunItem implements GeoItem { ItemStack stack = player.getMainHandItem(); if (!stack.is(ModTags.Items.GUN)) return PlayState.STOP; var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); boolean drum = GunsTool.getAttachmentType(tag, GunsTool.AttachmentType.MAGAZINE) == 2; boolean grip = GunsTool.getAttachmentType(tag, GunsTool.AttachmentType.GRIP) == 1 || GunsTool.getAttachmentType(tag, GunsTool.AttachmentType.GRIP) == 2; 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 ed61f4409..4ae05fed1 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 @@ -50,7 +50,7 @@ public class MarlinItem extends GunItem implements GeoItem { ItemStack stack = player.getMainHandItem(); if (!stack.is(ModTags.Items.GUN)) return PlayState.STOP; var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); if (GunsTool.getGunIntTag(tag, "BoltActionTick") > 0) { return event.setAndContinue(RawAnimation.begin().thenPlay("animation.marlin.shift")); @@ -87,7 +87,7 @@ public class MarlinItem extends GunItem implements GeoItem { && player.onGround() && player.getPersistentData().getDouble("noRun") == 0 && ClientEventHandler.drawTime < 0.01 - && !data.isReloading()) { + && !data.reloading()) { if (player.hasEffect(MobEffects.MOVEMENT_SPEED)) { return event.setAndContinue(RawAnimation.begin().thenLoop("animation.marlin.run_fast")); } else { 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 041466210..46aec2bb8 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 @@ -52,7 +52,7 @@ public class Mk14Item extends GunItem implements GeoItem { ItemStack stack = player.getMainHandItem(); if (!stack.is(ModTags.Items.GUN)) return PlayState.STOP; var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); boolean drum = GunsTool.getAttachmentType(tag, GunsTool.AttachmentType.MAGAZINE) == 2; boolean grip = GunsTool.getAttachmentType(tag, GunsTool.AttachmentType.GRIP) == 1 || GunsTool.getAttachmentType(tag, GunsTool.AttachmentType.GRIP) == 2; 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 d6743dbe2..ee0825a98 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 @@ -56,7 +56,7 @@ public class Qbz95Item extends GunItem implements GeoItem { ItemStack stack = player.getMainHandItem(); if (!stack.is(ModTags.Items.GUN)) return PlayState.STOP; var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); boolean drum = GunsTool.getAttachmentType(tag, GunsTool.AttachmentType.MAGAZINE) == 2; boolean grip = GunsTool.getAttachmentType(tag, GunsTool.AttachmentType.GRIP) == 1 || GunsTool.getAttachmentType(tag, GunsTool.AttachmentType.GRIP) == 2; 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 dadeadcbb..0907c5ce5 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 @@ -92,11 +92,11 @@ public class SksItem extends GunItem implements GeoItem { @ParametersAreNonnullByDefault public void inventoryTick(ItemStack stack, Level level, Entity entity, int slot, boolean selected) { var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); if (tag.getBoolean("draw")) { tag.putBoolean("draw", false); - if (GunsTool.getGunIntTag(tag, "Ammo") == 0) { + if (data.ammo() == 0) { GunsTool.setGunBooleanTag(tag, "HoldOpen", true); } data.save(); 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 ae52bd473..1dcea6dd5 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 @@ -96,7 +96,7 @@ public class M870Item extends GunItem implements GeoItem { && player.onGround() && player.getPersistentData().getDouble("noRun") == 0 && ClientEventHandler.drawTime < 0.01 - && !data.isReloading()) { + && !data.reloading()) { if (player.hasEffect(MobEffects.MOVEMENT_SPEED)) { return event.setAndContinue(RawAnimation.begin().thenLoop("animation.m870.run_fast")); } else { 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 ef7f67a39..30bbe1c92 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 @@ -52,7 +52,7 @@ public class VectorItem extends GunItem implements GeoItem { ItemStack stack = player.getMainHandItem(); if (!stack.is(ModTags.Items.GUN)) return PlayState.STOP; var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); boolean drum = GunsTool.getAttachmentType(tag, GunsTool.AttachmentType.MAGAZINE) == 2; 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 545d06778..75f422a16 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 @@ -51,7 +51,7 @@ public class K98Item extends GunItem implements GeoItem { ItemStack stack = player.getMainHandItem(); if (!stack.is(ModTags.Items.GUN)) return PlayState.STOP; var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); if (GunsTool.getGunIntTag(tag, "BoltActionTick") > 0) { return event.setAndContinue(RawAnimation.begin().thenPlay("animation.k98.shift")); @@ -87,7 +87,7 @@ public class K98Item extends GunItem implements GeoItem { ItemStack stack = player.getMainHandItem(); if (!stack.is(ModTags.Items.GUN)) return PlayState.STOP; var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); if (player.isSprinting() && player.onGround() && player.getPersistentData().getDouble("noRun") == 0 @@ -96,7 +96,7 @@ public class K98Item extends GunItem implements GeoItem { && data.getReloadStage() != 2 && data.getReloadStage() != 3 && ClientEventHandler.drawTime < 0.01 - && !data.isReloading() + && !data.reloading() ) { if (player.hasEffect(MobEffects.MOVEMENT_SPEED) && GunsTool.getGunIntTag(tag, "BoltActionTick") == 0) { return event.setAndContinue(RawAnimation.begin().thenLoop("animation.k98.run_fast")); 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 dba27ab9c..9bad7adc0 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 @@ -50,7 +50,7 @@ public class M98bItem extends GunItem implements GeoItem { ItemStack stack = player.getMainHandItem(); if (!stack.is(ModTags.Items.GUN)) return PlayState.STOP; var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); if (GunsTool.getGunIntTag(tag, "BoltActionTick") > 0) { return event.setAndContinue(RawAnimation.begin().thenPlay("animation.m98b.shift")); @@ -73,7 +73,7 @@ public class M98bItem extends GunItem implements GeoItem { ItemStack stack = player.getMainHandItem(); if (!stack.is(ModTags.Items.GUN)) return PlayState.STOP; var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); if (player.isSprinting() && player.onGround() && player.getPersistentData().getDouble("noRun") == 0 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 e85352eb9..f0c9bd347 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 @@ -51,17 +51,17 @@ public class MosinNagantItem extends GunItem implements GeoItem { ItemStack stack = player.getMainHandItem(); if (!stack.is(ModTags.Items.GUN)) return PlayState.STOP; var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); if (GunsTool.getGunIntTag(tag, "BoltActionTick") > 0) { return event.setAndContinue(RawAnimation.begin().thenPlay("animation.mosin.shift")); } - if (data.getReloadStage() == 1 && GunsTool.getGunIntTag(tag, "Ammo") == 0) { + if (data.getReloadStage() == 1 && data.ammo() == 0) { return event.setAndContinue(RawAnimation.begin().thenPlay("animation.mosin.prepare_empty")); } - if (data.getReloadStage() == 1 && GunsTool.getGunIntTag(tag, "Ammo") > 0) { + if (data.getReloadStage() == 1 && data.ammo() > 0) { return event.setAndContinue(RawAnimation.begin().thenPlay("animation.mosin.prepare")); } @@ -86,7 +86,7 @@ public class MosinNagantItem extends GunItem implements GeoItem { ItemStack stack = player.getMainHandItem(); if (!stack.is(ModTags.Items.GUN)) return PlayState.STOP; var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); if (player.isSprinting() && player.onGround() && player.getPersistentData().getDouble("noRun") == 0 @@ -95,7 +95,7 @@ public class MosinNagantItem extends GunItem implements GeoItem { && data.getReloadStage() != 2 && data.getReloadStage() != 3 && ClientEventHandler.drawTime < 0.01 - && !data.isReloading() + && !data.reloading() ) { if (player.hasEffect(MobEffects.MOVEMENT_SPEED) && GunsTool.getGunIntTag(tag, "BoltActionTick") == 0) { return event.setAndContinue(RawAnimation.begin().thenLoop("animation.mosin.run_fast")); 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 cf8c973bb..2732714db 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 @@ -77,7 +77,7 @@ public class SentinelItem extends GunItem implements GeoItem, EnergyStorageItem ItemStack stack = player.getMainHandItem(); if (!stack.is(ModTags.Items.GUN)) return PlayState.STOP; var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); if (GunsTool.getGunIntTag(tag, "BoltActionTick") > 0) { return event.setAndContinue(RawAnimation.begin().thenPlay("animation.sentinel.shift")); @@ -104,7 +104,7 @@ public class SentinelItem extends GunItem implements GeoItem, EnergyStorageItem ItemStack stack = player.getMainHandItem(); if (!stack.is(ModTags.Items.GUN)) return PlayState.STOP; var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); if (player.isSprinting() && player.onGround() && player.getPersistentData().getDouble("noRun") == 0 @@ -138,7 +138,7 @@ public class SentinelItem extends GunItem implements GeoItem, EnergyStorageItem public void inventoryTick(ItemStack stack, Level world, Entity entity, int slot, boolean selected) { super.inventoryTick(stack, world, entity, slot, selected); var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); var cap = stack.getCapability(Capabilities.EnergyStorage.ITEM); if (cap != null && cap.getEnergyStored() > 0) { diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/special/BocekItem.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/special/BocekItem.java index 599b2809b..42f5a33a1 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/special/BocekItem.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/special/BocekItem.java @@ -118,7 +118,7 @@ public class BocekItem extends GunItem implements GeoItem, SpecialFireWeapon { public void inventoryTick(ItemStack stack, Level world, Entity entity, int slot, boolean selected) { super.inventoryTick(stack, world, entity, slot, selected); var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); if (entity instanceof Player player) { GunsTool.setGunIntTag(tag, "MaxAmmo", getAmmoCount(player)); data.save(); @@ -172,8 +172,8 @@ public class BocekItem extends GunItem implements GeoItem, SpecialFireWeapon { public void fireOnRelease(Player player, final GunData data) { if (player.level().isClientSide()) return; - var tag = data.getTag(); - var stack = data.getStack(); + var tag = data.tag(); + var stack = data.stack(); var perk = PerkHelper.getPerkByType(tag, Perk.Type.AMMO); if (player instanceof ServerPlayer serverPlayer) { 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 62b427a69..448ece622 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 @@ -147,7 +147,7 @@ public class TaserItem extends GunItem implements GeoItem, SpecialFireWeapon, En public void inventoryTick(ItemStack stack, Level world, Entity entity, int slot, boolean selected) { super.inventoryTick(stack, world, entity, slot, selected); var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); if (entity instanceof Player player) { GunsTool.setGunIntTag(tag, "MaxAmmo", getAmmoCount(player)); @@ -224,16 +224,16 @@ public class TaserItem extends GunItem implements GeoItem, SpecialFireWeapon, En @Override public void fireOnPress(Player player, final GunData data) { - if (data.isReloading()) return; - ItemStack stack = data.getStack(); - var tag = data.getTag(); + if (data.reloading()) return; + ItemStack stack = data.stack(); + var tag = data.tag(); int perkLevel = PerkHelper.getItemPerkLevel(ModPerks.VOLT_OVERLOAD.get(), tag); var energyStorage = stack.getCapability(Capabilities.EnergyStorage.ITEM); var hasEnoughEnergy = energyStorage != null && energyStorage.getEnergyStored() >= 400 + 100 * perkLevel; if (player.getCooldowns().isOnCooldown(stack.getItem()) - || data.getAmmo() <= 0 + || data.ammo() <= 0 || !hasEnoughEnergy ) return; @@ -263,8 +263,8 @@ public class TaserItem extends GunItem implements GeoItem, SpecialFireWeapon, En PacketDistributor.sendToPlayer(serverPlayer, new ShootClientMessage(10)); } - data.setAmmo(data.getAmmo() - 1); - data.getTag().putBoolean("shoot", true); + data.setAmmo(data.ammo() - 1); + data.tag().putBoolean("shoot", true); energyStorage.extractEnergy(400 + 100 * perkLevel, false); } diff --git a/src/main/java/com/atsuishio/superbwarfare/menu/ReforgingTableMenu.java b/src/main/java/com/atsuishio/superbwarfare/menu/ReforgingTableMenu.java index 8566e8736..218b83842 100644 --- a/src/main/java/com/atsuishio/superbwarfare/menu/ReforgingTableMenu.java +++ b/src/main/java/com/atsuishio/superbwarfare/menu/ReforgingTableMenu.java @@ -8,7 +8,6 @@ import com.atsuishio.superbwarfare.item.gun.GunData; 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.NBTTool; import net.minecraft.util.Mth; import net.minecraft.world.Container; @@ -209,15 +208,14 @@ public class ReforgingTableMenu extends AbstractContainerMenu { return; } var data = GunData.from(stack); - var tag = data.getTag(); - double oldPoint = data.getUpgradePoint(); + double oldPoint = data.upgradePoint(); int point = (int) oldPoint; int newPoint = this.upgradePoint.get(); int delta = newPoint - point; if (delta != 0) { - GunsTool.setGunDoubleTag(tag, "UpgradePoint", oldPoint + delta); + data.setUpgradePoint(oldPoint + delta); data.save(); } } @@ -240,7 +238,7 @@ public class ReforgingTableMenu extends AbstractContainerMenu { ItemStack result = gun.copy(); var data = GunData.from(result); - final var tag = data.getTag(); + final var tag = data.tag(); if (!ammo.isEmpty() && ammo.getItem() instanceof PerkItem perkItem) { if (gunItem.canApplyPerk(perkItem.getPerk())) { @@ -299,15 +297,15 @@ public class ReforgingTableMenu extends AbstractContainerMenu { var data = GunData.from(gun); if (level <= 0) { - this.upgradePoint.set((int) data.getUpgradePoint()); + this.upgradePoint.set((int) data.upgradePoint()); return; } ItemStack output = gun.copy(); final var outputTag = NBTTool.getTag(output); PerkHelper.removePerkByType(outputTag, perkItem.getPerk().type); - data.setUpgradePoint(Math.min(MAX_UPGRADE_POINT, level - 1 + data.getUpgradePoint())); - this.upgradePoint.set((int) data.getUpgradePoint()); + data.setUpgradePoint(Math.min(MAX_UPGRADE_POINT, level - 1 + data.upgradePoint())); + this.upgradePoint.set((int) data.upgradePoint()); data.save(); this.container.setItem(INPUT_SLOT, output); @@ -340,9 +338,9 @@ public class ReforgingTableMenu extends AbstractContainerMenu { private void onPlaceGun(ItemStack stack) { if (!(stack.getItem() instanceof GunItem)) return; var data = GunData.from(stack); - var tag = data.getTag(); + var tag = data.tag(); - int point = (int) data.getUpgradePoint(); + int point = (int) data.upgradePoint(); this.upgradePoint.set(Mth.clamp(point, 0, MAX_UPGRADE_POINT)); var ammoPerk = PerkHelper.getPerkByType(tag, Perk.Type.AMMO); diff --git a/src/main/java/com/atsuishio/superbwarfare/network/message/send/AdjustZoomFovMessage.java b/src/main/java/com/atsuishio/superbwarfare/network/message/send/AdjustZoomFovMessage.java index 430c0d58c..55aebbb35 100644 --- a/src/main/java/com/atsuishio/superbwarfare/network/message/send/AdjustZoomFovMessage.java +++ b/src/main/java/com/atsuishio/superbwarfare/network/message/send/AdjustZoomFovMessage.java @@ -34,7 +34,7 @@ public record AdjustZoomFovMessage(double scroll) implements CustomPacketPayload ItemStack stack = player.getMainHandItem(); if (!stack.is(ModTags.Items.GUN)) return; var data = GunData.from(stack); - var tag = data.getTag(); + var tag = data.tag(); if (stack.is(ModItems.MINIGUN.get())) { double minRpm = 300 - 1200; diff --git a/src/main/java/com/atsuishio/superbwarfare/network/message/send/EditMessage.java b/src/main/java/com/atsuishio/superbwarfare/network/message/send/EditMessage.java index 982b1aa8d..6502710aa 100644 --- a/src/main/java/com/atsuishio/superbwarfare/network/message/send/EditMessage.java +++ b/src/main/java/com/atsuishio/superbwarfare/network/message/send/EditMessage.java @@ -35,7 +35,7 @@ public record EditMessage(int msgType) implements CustomPacketPayload { if (!stack.is(ModTags.Items.GUN)) return; var data = GunData.from(stack); - var rootTag = data.getTag(); + var rootTag = data.tag(); CompoundTag tag = rootTag.getCompound("Attachments"); switch (type) { case 0 -> { diff --git a/src/main/java/com/atsuishio/superbwarfare/network/message/send/FireMessage.java b/src/main/java/com/atsuishio/superbwarfare/network/message/send/FireMessage.java index 250d2ccdc..2db3fc528 100644 --- a/src/main/java/com/atsuishio/superbwarfare/network/message/send/FireMessage.java +++ b/src/main/java/com/atsuishio/superbwarfare/network/message/send/FireMessage.java @@ -47,13 +47,13 @@ public record FireMessage(int msgType) implements CustomPacketPayload { ItemStack stack = player.getMainHandItem(); if (!stack.is(ModTags.Items.GUN)) return; var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); handleGunBolt(player, stack); var cap = player.getCapability(ModCapabilities.PLAYER_VARIABLE); if (type == 0) { - if (tag.getDouble("prepare") == 0 && data.isReloading() && data.getAmmo() > 0) { + if (tag.getDouble("prepare") == 0 && data.reloading() && data.ammo() > 0) { tag.putDouble("force_stop", 1); } @@ -90,14 +90,14 @@ public record FireMessage(int msgType) implements CustomPacketPayload { private static void handleGunBolt(Player player, ItemStack stack) { if (!stack.is(ModTags.Items.GUN)) return; var data = GunData.from(stack); - CompoundTag tag = data.getTag(); + CompoundTag tag = data.tag(); if (data.boltActionTime() > 0 - && data.getAmmo() > (stack.is(ModTags.Items.REVOLVER) ? -1 : 0) + && data.ammo() > (stack.is(ModTags.Items.REVOLVER) ? -1 : 0) && GunsTool.getGunIntTag(tag, "BoltActionTick") == 0 && !(data.normalReloading() || data.emptyReloading()) - && !data.isReloading() + && !data.reloading() && !GunsTool.getGunBooleanTag(tag, "Charging")) { if (!player.getCooldowns().isOnCooldown(stack.getItem()) && GunsTool.getGunBooleanTag(tag, "NeedBoltAction")) { GunsTool.setGunIntTag(tag, "BoltActionTick", data.boltActionTime() + 1); diff --git a/src/main/java/com/atsuishio/superbwarfare/network/message/send/FireModeMessage.java b/src/main/java/com/atsuishio/superbwarfare/network/message/send/FireModeMessage.java index a5aa241c3..5edecb5a4 100644 --- a/src/main/java/com/atsuishio/superbwarfare/network/message/send/FireModeMessage.java +++ b/src/main/java/com/atsuishio/superbwarfare/network/message/send/FireModeMessage.java @@ -35,8 +35,8 @@ public record FireModeMessage(int msgType) implements CustomPacketPayload { ItemStack stack = player.getMainHandItem(); if (stack.getItem() instanceof GunItem gunItem) { var data = GunData.from(stack); - var tag = data.getTag(); - int fireMode = data.getFireMode(); + var tag = data.tag(); + int fireMode = data.fireMode(); int mode = gunItem.getAvailableFireModes(); mode &= 0b111; diff --git a/src/main/java/com/atsuishio/superbwarfare/network/message/send/ReloadMessage.java b/src/main/java/com/atsuishio/superbwarfare/network/message/send/ReloadMessage.java index ed493d2ec..3767d5e85 100644 --- a/src/main/java/com/atsuishio/superbwarfare/network/message/send/ReloadMessage.java +++ b/src/main/java/com/atsuishio/superbwarfare/network/message/send/ReloadMessage.java @@ -41,17 +41,17 @@ public record ReloadMessage(int msgType) implements CustomPacketPayload { if (!(stack.getItem() instanceof GunItem gunItem)) return; var data = GunData.from(stack); - var tag = data.getTag(); + var tag = data.tag(); if (!player.isSpectator() && !GunsTool.getGunBooleanTag(tag, "Charging") && GunsTool.getGunIntTag(tag, "ReloadTime") == 0 && GunsTool.getGunIntTag(tag, "BoltActionTick") == 0 - && !data.isReloading() + && !data.reloading() ) { boolean canSingleReload = gunItem.isIterativeReload(stack); boolean canReload = gunItem.isMagazineReload(stack) && !gunItem.isClipReload(stack); - boolean clipLoad = data.getAmmo() == 0 && gunItem.isClipReload(stack); + boolean clipLoad = data.ammo() == 0 && gunItem.isClipReload(stack); // 检查备弹 boolean hasCreativeAmmoBox = player.getInventory().hasAnyMatching(item -> item.is(ModItems.CREATIVE_AMMO_BOX.get())); @@ -79,21 +79,21 @@ public record ReloadMessage(int msgType) implements CustomPacketPayload { if (gunItem.isOpenBolt(stack)) { if (gunItem.hasBulletInBarrel(stack)) { - if (data.getAmmo() < magazine + 1) { + if (data.ammo() < magazine + 1) { GunsTool.setGunBooleanTag(tag, "StartReload", true); } } else { - if (data.getAmmo() < magazine) { + if (data.ammo() < magazine) { GunsTool.setGunBooleanTag(tag, "StartReload", true); } } - } else if (data.getAmmo() < magazine) { + } else if (data.ammo() < magazine) { GunsTool.setGunBooleanTag(tag, "StartReload", true); } return; } - if (canSingleReload && data.getAmmo() < data.magazine()) { + if (canSingleReload && data.ammo() < data.magazine()) { tag.putBoolean("start_single_reload", true); } data.save(); diff --git a/src/main/java/com/atsuishio/superbwarfare/network/message/send/SensitivityMessage.java b/src/main/java/com/atsuishio/superbwarfare/network/message/send/SensitivityMessage.java index 4aeb827d5..22741cc15 100644 --- a/src/main/java/com/atsuishio/superbwarfare/network/message/send/SensitivityMessage.java +++ b/src/main/java/com/atsuishio/superbwarfare/network/message/send/SensitivityMessage.java @@ -28,7 +28,7 @@ public record SensitivityMessage(boolean isAdd) implements CustomPacketPayload { if (!stack.is(ModTags.Items.GUN)) return; var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); if (message.isAdd) { tag.putInt("sensitivity", Math.min(10, tag.getInt("sensitivity") + 1)); } else { diff --git a/src/main/java/com/atsuishio/superbwarfare/network/message/send/ShootMessage.java b/src/main/java/com/atsuishio/superbwarfare/network/message/send/ShootMessage.java index 8c32d9c59..ed3fb39cf 100644 --- a/src/main/java/com/atsuishio/superbwarfare/network/message/send/ShootMessage.java +++ b/src/main/java/com/atsuishio/superbwarfare/network/message/send/ShootMessage.java @@ -45,14 +45,14 @@ public record ShootMessage(double spread) implements CustomPacketPayload { public static void pressAction(Player player, double spared) { ItemStack stack = player.getMainHandItem(); var data = GunData.from(stack); - var tag = data.getTag(); + var tag = data.tag(); if (stack.is(ModTags.Items.NORMAL_GUN)) { int projectileAmount = data.projectileAmount(); - if (data.getAmmo() > 0) { + if (data.ammo() > 0) { // 空仓挂机 - if (data.getAmmo() == 1) { + if (data.ammo() == 1) { GunsTool.setGunBooleanTag(tag, "HoldOpen", true); } @@ -61,14 +61,14 @@ public record ShootMessage(double spread) implements CustomPacketPayload { } // 判断是否为栓动武器(BoltActionTime > 0),并在开火后给一个需要上膛的状态 - if (data.boltActionTime() > 0 && data.getAmmo() > (stack.is(ModTags.Items.REVOLVER) ? 0 : 1)) { + if (data.boltActionTime() > 0 && data.ammo() > (stack.is(ModTags.Items.REVOLVER) ? 0 : 1)) { GunsTool.setGunBooleanTag(tag, "NeedBoltAction", true); } - data.setAmmo(data.getAmmo() - 1); + data.setAmmo(data.ammo() - 1); tag.putDouble("empty", 1); - if (stack.getItem() == ModItems.M_60.get() && data.getAmmo() <= 5) { + if (stack.getItem() == ModItems.M_60.get() && data.ammo() <= 5) { GunsTool.setGunBooleanTag(tag, "HideBulletChain", true); } diff --git a/src/main/java/com/atsuishio/superbwarfare/network/message/send/SwitchScopeMessage.java b/src/main/java/com/atsuishio/superbwarfare/network/message/send/SwitchScopeMessage.java index df0c3cb53..c3be8aa68 100644 --- a/src/main/java/com/atsuishio/superbwarfare/network/message/send/SwitchScopeMessage.java +++ b/src/main/java/com/atsuishio/superbwarfare/network/message/send/SwitchScopeMessage.java @@ -28,7 +28,7 @@ public record SwitchScopeMessage(double scroll) implements CustomPacketPayload { if (!stack.is(ModTags.Items.GUN)) return; var data = GunData.from(stack); - final var tag = data.getTag(); + final var tag = data.tag(); tag.putBoolean("ScopeAlt", tag.getBoolean("ScopeAlt")); data.save(); } diff --git a/src/main/java/com/atsuishio/superbwarfare/network/message/send/ZoomMessage.java b/src/main/java/com/atsuishio/superbwarfare/network/message/send/ZoomMessage.java index 58bd3e57d..3f82d0ba3 100644 --- a/src/main/java/com/atsuishio/superbwarfare/network/message/send/ZoomMessage.java +++ b/src/main/java/com/atsuishio/superbwarfare/network/message/send/ZoomMessage.java @@ -64,7 +64,7 @@ public record ZoomMessage(int msgType) implements CustomPacketPayload { if (player.getMainHandItem().getItem() == ModItems.JAVELIN.get()) { var handItem = player.getMainHandItem(); var data = GunData.from(handItem); - var tag = data.getTag(); + var tag = data.tag(); tag.putBoolean("Seeking", false); tag.putInt("SeekTime", 0); diff --git a/src/main/java/com/atsuishio/superbwarfare/perk/PerkHelper.java b/src/main/java/com/atsuishio/superbwarfare/perk/PerkHelper.java index b1ce10ba4..6c0d9a081 100644 --- a/src/main/java/com/atsuishio/superbwarfare/perk/PerkHelper.java +++ b/src/main/java/com/atsuishio/superbwarfare/perk/PerkHelper.java @@ -66,7 +66,7 @@ public class PerkHelper { } public static int getItemPerkLevel(Perk perk, GunData data) { - return getItemPerkLevel(perk, data.getTag()); + return getItemPerkLevel(perk, data.tag()); } public static int getItemPerkLevel(Perk perk, final CompoundTag tag) { @@ -89,7 +89,7 @@ public class PerkHelper { } public static CompoundTag getPerkTag(GunData data, Perk.Type type) { - return getPerkTag(data.getTag(), type); + return getPerkTag(data.tag(), type); } public static CompoundTag getPerkTag(final CompoundTag tag, Perk.Type type) { @@ -113,7 +113,7 @@ public class PerkHelper { } public static Perk getPerkByType(GunData data, Perk.Type type) { - return getPerkByType(data.getTag(), type); + return getPerkByType(data.tag(), type); } diff --git a/src/main/java/com/atsuishio/superbwarfare/tools/GunsTool.java b/src/main/java/com/atsuishio/superbwarfare/tools/GunsTool.java index 2c407fbea..62411292e 100644 --- a/src/main/java/com/atsuishio/superbwarfare/tools/GunsTool.java +++ b/src/main/java/com/atsuishio/superbwarfare/tools/GunsTool.java @@ -55,48 +55,6 @@ public class GunsTool { } } - public static void initGun(final CompoundTag tag, String location) { - if (gunsData != null && gunsData.get(location) != null) { - CompoundTag data = tag.getCompound("GunData"); - - // gunsData.get(location).forEach(data::putDouble); - - data.putBoolean("Init", true); - tag.put("GunData", data); - } - } - - public static void initCreativeGun(ItemStack stack, String location) { - var data = GunData.from(stack); - var fillAmmo = !data.getData().getBoolean("Init"); - - initGun(data.getTag(), location); - data.save(); - - if (fillAmmo) { - data.setAmmo(data.magazine()); - data.save(); - } - } - - public static void generateAndSetUUID(final CompoundTag tag) { - UUID uuid = UUID.randomUUID(); - var data = tag.getCompound("GunData"); - data.putUUID("UUID", uuid); - tag.put("GunData", data); - } - - public static double getGunDefaultData(final CompoundTag tag, String name) { - var id = tag.getString("id"); - - if (!tag.getBoolean("init")) { - return GunsTool.gunsData - .getOrDefault(id, new HashMap<>()) - .getOrDefault(name, 0.0); - } - return getGunDoubleTag(tag, name); - } - @SubscribeEvent public static void onPlayerLogin(PlayerEvent.PlayerLoggedInEvent event) { if (event.getEntity() instanceof ServerPlayer player) { @@ -127,10 +85,10 @@ public class GunsTool { } public static void reload(Player player, ItemStack stack, GunData gunData, AmmoType type, boolean extraOne) { - var data = gunData.getData(); + var data = gunData.data(); int mag = gunData.magazine(); - int ammo = gunData.getAmmo(); + int ammo = gunData.ammo(); int ammoToAdd = mag - ammo + (extraOne ? 1 : 0); // 空仓换弹的栓动武器应该在换弹后取消待上膛标记 @@ -157,6 +115,7 @@ public class GunsTool { /* PerkData */ public static void setPerkIntTag(final CompoundTag rootTag, String name, int num) { CompoundTag tag = rootTag.getCompound("PerkData"); + if (!tag.contains(name) && num == 0) return; tag.putInt(name, num); rootTag.put("PerkData", tag); } @@ -168,6 +127,7 @@ public class GunsTool { public static void setPerkDoubleTag(final CompoundTag rootTag, String name, double num) { CompoundTag tag = rootTag.getCompound("PerkData"); + if (!tag.contains(name) && num == 0) return; tag.putDouble(name, num); rootTag.put("PerkData", tag); } @@ -179,6 +139,7 @@ public class GunsTool { public static void setPerkBooleanTag(final CompoundTag rootTag, String name, boolean flag) { CompoundTag tag = rootTag.getCompound("PerkData"); + if (!tag.contains(name) && !flag) return; tag.putBoolean(name, flag); rootTag.put("PerkData", tag); } @@ -228,9 +189,7 @@ public class GunsTool { } public static int getGunIntTag(final CompoundTag tag, String name) { - var data = tag.getCompound("GunData"); - if (!data.contains(name)) return (int) getGunDefaultData(tag, name); - return data.getInt(name); + return getGunIntTag(tag, name, 0); } public static int getGunIntTag(final CompoundTag tag, String name, int defaultValue) { @@ -246,9 +205,7 @@ public class GunsTool { } public static double getGunDoubleTag(final CompoundTag tag, String name) { - var data = tag.getCompound("GunData"); - if (!data.contains(name) && !tag.getBoolean("init")) return getGunDefaultData(tag, name); - return data.getDouble(name); + return getGunDoubleTag(tag, name, 0); } public static double getGunDoubleTag(final CompoundTag tag, String name, double defaultValue) { @@ -265,7 +222,7 @@ public class GunsTool { public static boolean getGunBooleanTag(final CompoundTag tag, String name) { var data = tag.getCompound("GunData"); - if (!data.contains(name)) return getGunDefaultData(tag, name) != 0; + if (!data.contains(name)) return false; return data.getBoolean(name); }