From 397f30bb6cb977972d2702f2455edc862d4f2e65 Mon Sep 17 00:00:00 2001 From: 17146 <1714673995@qq.com> Date: Tue, 7 Jan 2025 02:44:42 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=85=85=E7=94=B5=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/vehicle/ContainerMobileEntity.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/ContainerMobileEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/ContainerMobileEntity.java index 2bb24b70f..744704a11 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/ContainerMobileEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/ContainerMobileEntity.java @@ -1,5 +1,6 @@ package com.atsuishio.superbwarfare.entity.vehicle; +import com.atsuishio.superbwarfare.init.ModItems; import com.atsuishio.superbwarfare.menu.VehicleMenu; import net.minecraft.core.Direction; import net.minecraft.core.NonNullList; @@ -21,6 +22,7 @@ import net.minecraft.world.level.gameevent.GameEvent; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.ForgeCapabilities; import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.energy.IEnergyStorage; import net.minecraftforge.items.wrapper.InvWrapper; import org.jetbrains.annotations.Nullable; @@ -67,8 +69,18 @@ public class ContainerMobileEntity extends MobileVehicleEntity implements HasCus public void baseTick() { super.baseTick(); pickUpItem(); - // TODO 载具储存空间有电池时,消耗电池能量给载具充电 -// ItemStack cell = this.getItemStacks().forEach()); + + this.getItemStacks().stream().filter(stack -> stack.is(ModItems.CELL.get()) && stack.getCapability(ForgeCapabilities.ENERGY).map(IEnergyStorage::getEnergyStored).orElse(0) > 0) + .forEach(stack -> + stack.getCapability(ForgeCapabilities.ENERGY).ifPresent(energyStorage -> { + if (this.getEnergy() < this.getMaxEnergy()) { + int energy = this.getMaxEnergy() - this.getEnergy(); + int stackEnergyNeed = Math.min(energyStorage.getEnergyStored(), energy); + energyStorage.extractEnergy(stackEnergyNeed, false); + this.setEnergy(this.getEnergy() + stackEnergyNeed); + } + }) + ); this.refreshDimensions(); }