From 52a342541b13c72dfd66db37c78d4515bc6d1452 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/ModCapabilities.java | 46 +++++++------------ 1 file changed, 17 insertions(+), 29 deletions(-) diff --git a/src/main/java/com/atsuishio/superbwarfare/capability/ModCapabilities.java b/src/main/java/com/atsuishio/superbwarfare/capability/ModCapabilities.java index 20064f2c5..4f794959f 100644 --- a/src/main/java/com/atsuishio/superbwarfare/capability/ModCapabilities.java +++ b/src/main/java/com/atsuishio/superbwarfare/capability/ModCapabilities.java @@ -4,6 +4,7 @@ import com.atsuishio.superbwarfare.Mod; import com.atsuishio.superbwarfare.block.entity.ChargingStationBlockEntity; import com.atsuishio.superbwarfare.block.entity.CreativeChargingStationBlockEntity; import com.atsuishio.superbwarfare.block.entity.FuMO25BlockEntity; +import com.atsuishio.superbwarfare.capability.energy.ItemEnergyStorage; import com.atsuishio.superbwarfare.capability.laser.LaserCapability; import com.atsuishio.superbwarfare.capability.laser.LaserCapabilityProvider; import com.atsuishio.superbwarfare.capability.player.PlayerVariable; @@ -12,17 +13,18 @@ import com.atsuishio.superbwarfare.entity.vehicle.base.EnergyVehicleEntity; import com.atsuishio.superbwarfare.init.ModBlockEntities; import com.atsuishio.superbwarfare.init.ModEntities; import com.atsuishio.superbwarfare.init.ModItems; -import com.atsuishio.superbwarfare.item.BatteryItem; import com.atsuishio.superbwarfare.item.CreativeChargingStationBlockItem; -import com.atsuishio.superbwarfare.item.gun.launcher.SecondaryCataclysm; -import com.atsuishio.superbwarfare.item.gun.sniper.SentinelItem; -import com.atsuishio.superbwarfare.item.gun.special.TaserItem; +import com.atsuishio.superbwarfare.item.EnergyStorageItem; import net.minecraft.world.entity.EntityType; +import net.minecraft.world.item.Item; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.common.EventBusSubscriber; import net.neoforged.neoforge.capabilities.Capabilities; import net.neoforged.neoforge.capabilities.EntityCapability; import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent; +import net.neoforged.neoforge.registries.DeferredHolder; + +import java.util.ArrayList; @EventBusSubscriber(modid = Mod.MODID, bus = EventBusSubscriber.Bus.MOD) public class ModCapabilities { @@ -48,35 +50,21 @@ public class ModCapabilities { // FuMO25 event.registerBlockEntity(Capabilities.EnergyStorage.BLOCK, ModBlockEntities.FUMO_25.value(), FuMO25BlockEntity::getEnergyStorage); - // 电池 - // TODO 电池到底怎么回事 - for (var item : ModItems.ITEMS.getEntries()) { - if (item.get() instanceof BatteryItem battery) { - event.registerItem(Capabilities.EnergyStorage.ITEM, - (obj, ctx) -> ((BatteryItem) obj.getItem()).getEnergyStorage(), - battery + // 所有能存能量的物品 + var list = new ArrayList>(); + list.addAll(ModItems.ITEMS.getEntries()); + list.addAll(ModItems.GUNS.getEntries()); + + for (var item : list) { + if (item.get() instanceof EnergyStorageItem) { + event.registerItem( + Capabilities.EnergyStorage.ITEM, + (stack, ctx) -> new ItemEnergyStorage(stack, ((EnergyStorageItem) stack.getItem()).getMaxEnergy()) + , item.get() ); } } - // 泰瑟枪 - event.registerItem(Capabilities.EnergyStorage.ITEM, - (obj, ctx) -> (obj.getItem() instanceof TaserItem taser) ? taser.getEnergyStorage() : null, - ModItems.TASER.value() - ); - - // 哨兵 - event.registerItem(Capabilities.EnergyStorage.ITEM, - (obj, ctx) -> (obj.getItem() instanceof SentinelItem sentinel) ? sentinel.getEnergyStorage() : null, - ModItems.SENTINEL.value() - ); - - // 二次灾变 - event.registerItem(Capabilities.EnergyStorage.ITEM, - (obj, ctx) -> (obj.getItem() instanceof SecondaryCataclysm cataclysm) ? cataclysm.getEnergyStorage() : null, - ModItems.SECONDARY_CATACLYSM.value() - ); - // 载具 for (var entity : ModEntities.REGISTRY.getEntries()) { if (entity.get().getBaseClass().isAssignableFrom(EnergyVehicleEntity.class)) {