优化容器载具提取物品能量实现
This commit is contained in:
parent
222a9707a7
commit
6980e692d0
1 changed files with 15 additions and 12 deletions
|
@ -22,7 +22,6 @@ 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;
|
||||||
import org.joml.Math;
|
import org.joml.Math;
|
||||||
|
@ -82,17 +81,21 @@ public class ContainerMobileEntity extends MobileVehicleEntity implements HasCus
|
||||||
super.baseTick();
|
super.baseTick();
|
||||||
// pickUpItem();
|
// pickUpItem();
|
||||||
|
|
||||||
this.getItemStacks().stream().filter(stack -> stack.is(ModItems.CELL.get()) && stack.getCapability(ForgeCapabilities.ENERGY).map(IEnergyStorage::getEnergyStored).orElse(0) > 0)
|
for (var stack : this.getItemStacks()) {
|
||||||
.forEach(stack ->
|
int neededEnergy = this.getMaxEnergy() - this.getEnergy();
|
||||||
stack.getCapability(ForgeCapabilities.ENERGY).ifPresent(energyStorage -> {
|
if (neededEnergy <= 0) break;
|
||||||
if (this.getEnergy() < this.getMaxEnergy()) {
|
|
||||||
int energy = this.getMaxEnergy() - this.getEnergy();
|
var energyCap = stack.getCapability(ForgeCapabilities.ENERGY).resolve();
|
||||||
int stackEnergyNeed = Math.min(energyStorage.getEnergyStored(), energy);
|
if (energyCap.isEmpty()) continue;
|
||||||
energyStorage.extractEnergy(stackEnergyNeed, false);
|
|
||||||
this.setEnergy(this.getEnergy() + stackEnergyNeed);
|
var energyStorage = energyCap.get();
|
||||||
}
|
var stored = energyStorage.getEnergyStored();
|
||||||
})
|
if (stored <= 0) continue;
|
||||||
);
|
|
||||||
|
int energyToExtract = Math.min(stored, neededEnergy);
|
||||||
|
energyStorage.extractEnergy(energyToExtract, false);
|
||||||
|
this.setEnergy(this.getEnergy() + energyToExtract);
|
||||||
|
}
|
||||||
this.refreshDimensions();
|
this.refreshDimensions();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue