From 5df7a14afb5d20245e30ac7ca8f9b34393358d2f Mon Sep 17 00:00:00 2001 From: Light_Quanta Date: Sun, 30 Mar 2025 12:57:31 +0800 Subject: [PATCH] =?UTF-8?q?=E6=AD=A3=E7=A1=AE=E6=B3=A8=E5=86=8C=E7=89=A9?= =?UTF-8?q?=E5=93=81=E8=83=BD=E9=87=8F=E8=83=BD=E5=8A=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../capability/energy/ItemEnergyProvider.java | 21 ------------------ .../superbwarfare/item/BatteryItem.java | 15 +++++-------- .../superbwarfare/item/EnergyStorageItem.java | 5 +++++ .../item/gun/launcher/SecondaryCataclysm.java | 22 ++++++------------- .../item/gun/sniper/SentinelItem.java | 18 ++++++--------- .../item/gun/special/TaserItem.java | 16 ++++++-------- .../network/NetworkRegistry.java | 1 + 7 files changed, 32 insertions(+), 66 deletions(-) delete mode 100644 src/main/java/com/atsuishio/superbwarfare/capability/energy/ItemEnergyProvider.java create mode 100644 src/main/java/com/atsuishio/superbwarfare/item/EnergyStorageItem.java diff --git a/src/main/java/com/atsuishio/superbwarfare/capability/energy/ItemEnergyProvider.java b/src/main/java/com/atsuishio/superbwarfare/capability/energy/ItemEnergyProvider.java deleted file mode 100644 index d955931c6..000000000 --- a/src/main/java/com/atsuishio/superbwarfare/capability/energy/ItemEnergyProvider.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.atsuishio.superbwarfare.capability.energy; - -import net.minecraft.world.item.ItemStack; -import net.neoforged.neoforge.capabilities.ICapabilityProvider; -import net.neoforged.neoforge.energy.EnergyStorage; -import net.neoforged.neoforge.energy.IEnergyStorage; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class ItemEnergyProvider implements ICapabilityProvider { - private final EnergyStorage energyStorage; - - public ItemEnergyProvider(int energyCapacity) { - this.energyStorage = new EnergyStorage(energyCapacity); - } - - @Override - public @Nullable IEnergyStorage getCapability(@NotNull ItemStack object, Void context) { - return energyStorage; - } -} diff --git a/src/main/java/com/atsuishio/superbwarfare/item/BatteryItem.java b/src/main/java/com/atsuishio/superbwarfare/item/BatteryItem.java index c61d7cd47..dde0b6bbf 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/BatteryItem.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/BatteryItem.java @@ -5,26 +5,17 @@ import net.minecraft.world.inventory.tooltip.TooltipComponent; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.neoforged.neoforge.capabilities.Capabilities; -import net.neoforged.neoforge.energy.EnergyStorage; -import net.neoforged.neoforge.energy.IEnergyStorage; import org.jetbrains.annotations.NotNull; import java.util.Optional; -public class BatteryItem extends Item { +public class BatteryItem extends Item implements EnergyStorageItem { public int maxEnergy; - public IEnergyStorage getEnergyStorage() { - return energy; - } - - private final IEnergyStorage energy; - public BatteryItem(int maxEnergy, Properties properties) { super(properties.stacksTo(1)); this.maxEnergy = maxEnergy; - this.energy = new EnergyStorage(maxEnergy); } @Override @@ -64,4 +55,8 @@ public class BatteryItem extends Item { return stack; } + @Override + public int getMaxEnergy() { + return maxEnergy; + } } diff --git a/src/main/java/com/atsuishio/superbwarfare/item/EnergyStorageItem.java b/src/main/java/com/atsuishio/superbwarfare/item/EnergyStorageItem.java new file mode 100644 index 000000000..f95af2a57 --- /dev/null +++ b/src/main/java/com/atsuishio/superbwarfare/item/EnergyStorageItem.java @@ -0,0 +1,5 @@ +package com.atsuishio.superbwarfare.item; + +public interface EnergyStorageItem { + int getMaxEnergy(); +} 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 b3f320260..26e3a996a 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 @@ -7,6 +7,7 @@ import com.atsuishio.superbwarfare.client.tooltip.component.SecondaryCataclysmIm import com.atsuishio.superbwarfare.entity.projectile.GunGrenadeEntity; import com.atsuishio.superbwarfare.event.ClientEventHandler; import com.atsuishio.superbwarfare.init.*; +import com.atsuishio.superbwarfare.item.EnergyStorageItem; import com.atsuishio.superbwarfare.item.gun.GunItem; import com.atsuishio.superbwarfare.item.gun.SpecialFireWeapon; import com.atsuishio.superbwarfare.network.message.receive.ShootClientMessage; @@ -32,8 +33,6 @@ import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.neoforged.neoforge.capabilities.Capabilities; -import net.neoforged.neoforge.energy.EnergyStorage; -import net.neoforged.neoforge.energy.IEnergyStorage; import net.neoforged.neoforge.network.PacketDistributor; import org.jetbrains.annotations.NotNull; import software.bernie.geckolib.animatable.GeoItem; @@ -45,13 +44,7 @@ import software.bernie.geckolib.util.GeckoLibUtil; import javax.annotation.ParametersAreNonnullByDefault; import java.util.Optional; -public class SecondaryCataclysm extends GunItem implements GeoItem, SpecialFireWeapon { - private final IEnergyStorage energyStorage = new EnergyStorage(24000); - - public IEnergyStorage getEnergyStorage() { - return energyStorage; - } - +public class SecondaryCataclysm extends GunItem implements GeoItem, SpecialFireWeapon, EnergyStorageItem { private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this); public static ItemDisplayContext transformType; @@ -71,12 +64,6 @@ public class SecondaryCataclysm extends GunItem implements GeoItem, SpecialFireW return Math.round((float) (cap != null ? cap.getEnergyStored() : 0) * 13.0F / 24000F); } - // TODO register cap -// @Override -// public ICapabilityProvider initCapabilities(ItemStack stack, CompoundTag tag) { -// return new ItemEnergyProvider(stack, energyCapacity.get()); -// } - @Override public int getBarColor(@NotNull ItemStack pStack) { return 0x95E9FF; @@ -347,4 +334,9 @@ public class SecondaryCataclysm extends GunItem implements GeoItem, SpecialFireW GunsTool.setGunIntTag(tag, "Ammo", GunsTool.getGunIntTag(tag, "Ammo", 0) - 1); player.getCooldowns().addCooldown(stack.getItem(), 6); } + + @Override + public int getMaxEnergy() { + return 24000; + } } \ No newline at end of file diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/SentinelItem.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/sniper/SentinelItem.java index f8a9fd50e..01c50a19c 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 @@ -8,6 +8,7 @@ import com.atsuishio.superbwarfare.init.ModItems; import com.atsuishio.superbwarfare.init.ModRarity; import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModTags; +import com.atsuishio.superbwarfare.item.EnergyStorageItem; import com.atsuishio.superbwarfare.item.gun.GunItem; import com.atsuishio.superbwarfare.perk.Perk; import com.atsuishio.superbwarfare.perk.PerkHelper; @@ -24,8 +25,6 @@ import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.neoforged.neoforge.capabilities.Capabilities; -import net.neoforged.neoforge.energy.EnergyStorage; -import net.neoforged.neoforge.energy.IEnergyStorage; import org.jetbrains.annotations.NotNull; import software.bernie.geckolib.animatable.GeoItem; import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache; @@ -37,21 +36,13 @@ import javax.annotation.ParametersAreNonnullByDefault; import java.util.Optional; import java.util.Set; -public class SentinelItem extends GunItem implements GeoItem { - - public IEnergyStorage getEnergyStorage() { - return energyStorage; - } - - private final IEnergyStorage energyStorage; +public class SentinelItem extends GunItem implements GeoItem, EnergyStorageItem { private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this); public static ItemDisplayContext transformType; public SentinelItem() { super(new Properties().stacksTo(1).rarity(ModRarity.getLegendary())); - - this.energyStorage = new EnergyStorage(24000); } @Override @@ -213,4 +204,9 @@ public class SentinelItem extends GunItem implements GeoItem { public int getAvailableFireModes() { return FireMode.SEMI.flag; } + + @Override + public int getMaxEnergy() { + return 24000; + } } \ No newline at end of file diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/special/TaserItem.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/special/TaserItem.java index 8983a67aa..1e1949a08 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 @@ -10,6 +10,7 @@ import com.atsuishio.superbwarfare.init.ModItems; import com.atsuishio.superbwarfare.init.ModPerks; import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModTags; +import com.atsuishio.superbwarfare.item.EnergyStorageItem; import com.atsuishio.superbwarfare.item.gun.GunItem; import com.atsuishio.superbwarfare.item.gun.SpecialFireWeapon; import com.atsuishio.superbwarfare.network.message.receive.ShootClientMessage; @@ -34,8 +35,6 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Rarity; import net.minecraft.world.level.Level; import net.neoforged.neoforge.capabilities.Capabilities; -import net.neoforged.neoforge.energy.EnergyStorage; -import net.neoforged.neoforge.energy.IEnergyStorage; import net.neoforged.neoforge.network.PacketDistributor; import org.jetbrains.annotations.NotNull; import software.bernie.geckolib.animatable.GeoItem; @@ -48,22 +47,16 @@ import javax.annotation.ParametersAreNonnullByDefault; import java.util.Optional; import java.util.Set; -public class TaserItem extends GunItem implements GeoItem, SpecialFireWeapon { +public class TaserItem extends GunItem implements GeoItem, SpecialFireWeapon, EnergyStorageItem { public static final int MAX_ENERGY = 6000; private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this); public static ItemDisplayContext transformType; - public IEnergyStorage getEnergyStorage() { - return energyStorage; - } - - private final IEnergyStorage energyStorage; public TaserItem() { super(new Properties().stacksTo(1).rarity(Rarity.COMMON)); - this.energyStorage = new EnergyStorage(MAX_ENERGY); } @Override @@ -284,4 +277,9 @@ public class TaserItem extends GunItem implements GeoItem, SpecialFireWeapon { energyStorage.extractEnergy(400 + 100 * perkLevel, false); tag.putBoolean("shoot", true); } + + @Override + public int getMaxEnergy() { + return MAX_ENERGY; + } } diff --git a/src/main/java/com/atsuishio/superbwarfare/network/NetworkRegistry.java b/src/main/java/com/atsuishio/superbwarfare/network/NetworkRegistry.java index 715270a91..e4f02348c 100644 --- a/src/main/java/com/atsuishio/superbwarfare/network/NetworkRegistry.java +++ b/src/main/java/com/atsuishio/superbwarfare/network/NetworkRegistry.java @@ -53,5 +53,6 @@ public class NetworkRegistry { registrar.playToServer(InteractMessage.TYPE, InteractMessage.STREAM_CODEC, InteractMessage::handler); registrar.playToServer(AdjustMortarAngleMessage.TYPE, AdjustMortarAngleMessage.STREAM_CODEC, AdjustMortarAngleMessage::handler); registrar.playToServer(ChangeVehicleSeatMessage.TYPE, ChangeVehicleSeatMessage.STREAM_CODEC, ChangeVehicleSeatMessage::handler); + registrar.playToServer(ShowChargingRangeMessage.TYPE, ShowChargingRangeMessage.STREAM_CODEC, ShowChargingRangeMessage::handler); } }