package com.atsuishio.superbwarfare.capability; import com.atsuishio.superbwarfare.Mod; import com.atsuishio.superbwarfare.block.entity.ChargingStationBlockEntity; import com.atsuishio.superbwarfare.block.entity.CreativeChargingStationBlockEntity; import com.atsuishio.superbwarfare.capability.energy.BlockEnergyStorageProvider; import com.atsuishio.superbwarfare.capability.energy.ItemEnergyProvider; import com.atsuishio.superbwarfare.capability.laser.LaserCapability; import com.atsuishio.superbwarfare.capability.laser.LaserCapabilityProvider; import com.atsuishio.superbwarfare.capability.player.PlayerVariable; import com.atsuishio.superbwarfare.capability.player.PlayerVariablesProvider; import com.atsuishio.superbwarfare.init.ModBlockEntities; import com.atsuishio.superbwarfare.init.ModItems; import com.atsuishio.superbwarfare.item.BatteryItem; import com.atsuishio.superbwarfare.item.CreativeChargingStationBlockItem; import net.minecraft.world.entity.EntityType; 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; @EventBusSubscriber(modid = Mod.MODID, bus = EventBusSubscriber.Bus.MOD) public class ModCapabilities { public static final EntityCapability LASER_CAPABILITY = EntityCapability.createVoid(Mod.loc("laser_capability"), LaserCapability.class); public static final EntityCapability PLAYER_VARIABLE = EntityCapability.createVoid(Mod.loc("player_variable"), PlayerVariable.class); @SubscribeEvent public static void registerCapabilities(RegisterCapabilitiesEvent event) { // 玩家变量和激光 event.registerEntity(ModCapabilities.LASER_CAPABILITY, EntityType.PLAYER, new LaserCapabilityProvider()); event.registerEntity(ModCapabilities.PLAYER_VARIABLE, EntityType.PLAYER, new PlayerVariablesProvider()); // 充电站 event.registerBlockEntity(Capabilities.EnergyStorage.BLOCK, ModBlockEntities.CHARGING_STATION.value(), new BlockEnergyStorageProvider<>(ChargingStationBlockEntity.MAX_ENERGY)); // TODO HANDLER event.registerBlockEntity(Capabilities.ItemHandler.BLOCK, ModBlockEntities.CHARGING_STATION.value(), new ChargingStationBlockEntity.ItemHandlerProvider()); // 创造模式充电站 event.registerBlockEntity(Capabilities.EnergyStorage.BLOCK, ModBlockEntities.CREATIVE_CHARGING_STATION.value(), new CreativeChargingStationBlockEntity.EnergyStorageProvider()); event.registerItem(Capabilities.EnergyStorage.ITEM, new CreativeChargingStationBlockItem.EnergyStorageProvider(), ModItems.CREATIVE_CHARGING_STATION.value()); // 电池 for (var item : ModItems.ITEMS.getEntries()) { if (item.get() instanceof BatteryItem battery) { event.registerItem(Capabilities.EnergyStorage.ITEM, new ItemEnergyProvider(battery.maxEnergy), battery); } } // 载具 // TODO 载具能量 // event.registerEntity(Capabilities.EnergyStorage.ENTITY, ModEntities., ); } }