添加充电逻辑

This commit is contained in:
17146 2025-01-07 02:44:42 +08:00
parent e35aaa5b64
commit 397f30bb6c

View file

@ -1,5 +1,6 @@
package com.atsuishio.superbwarfare.entity.vehicle; package com.atsuishio.superbwarfare.entity.vehicle;
import com.atsuishio.superbwarfare.init.ModItems;
import com.atsuishio.superbwarfare.menu.VehicleMenu; import com.atsuishio.superbwarfare.menu.VehicleMenu;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.core.NonNullList; 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.Capability;
import net.minecraftforge.common.capabilities.ForgeCapabilities; import net.minecraftforge.common.capabilities.ForgeCapabilities;
import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.common.util.LazyOptional;
import net.minecraftforge.energy.IEnergyStorage;
import net.minecraftforge.items.wrapper.InvWrapper; import net.minecraftforge.items.wrapper.InvWrapper;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
@ -67,8 +69,18 @@ public class ContainerMobileEntity extends MobileVehicleEntity implements HasCus
public void baseTick() { public void baseTick() {
super.baseTick(); super.baseTick();
pickUpItem(); 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(); this.refreshDimensions();
} }