调整充电站部分方法
This commit is contained in:
parent
a9c9983876
commit
bfefe85f21
1 changed files with 15 additions and 12 deletions
|
@ -54,7 +54,7 @@ public class ChargingStationBlockEntity extends BlockEntity implements WorldlyCo
|
||||||
protected NonNullList<ItemStack> items = NonNullList.withSize(2, ItemStack.EMPTY);
|
protected NonNullList<ItemStack> items = NonNullList.withSize(2, ItemStack.EMPTY);
|
||||||
|
|
||||||
private LazyOptional<EnergyStorage> energyHandler;
|
private LazyOptional<EnergyStorage> energyHandler;
|
||||||
private LazyOptional<?>[] itemHandlers = SidedInvWrapper.create(this, Direction.NORTH);
|
private LazyOptional<?>[] itemHandlers = SidedInvWrapper.create(this, Direction.NORTH, Direction.DOWN, Direction.NORTH);
|
||||||
|
|
||||||
public int fuelTick = 0;
|
public int fuelTick = 0;
|
||||||
public int maxFuelTick = DEFAULT_FUEL_TIME;
|
public int maxFuelTick = DEFAULT_FUEL_TIME;
|
||||||
|
@ -96,9 +96,6 @@ public class ChargingStationBlockEntity extends BlockEntity implements WorldlyCo
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void serverTick(Level pLevel, BlockPos pPos, BlockState pState, ChargingStationBlockEntity blockEntity) {
|
public static void serverTick(Level pLevel, BlockPos pPos, BlockState pState, ChargingStationBlockEntity blockEntity) {
|
||||||
blockEntity.setChanged();
|
|
||||||
blockEntity.energyHandler.ifPresent(handler -> blockEntity.energy = handler.getEnergyStored());
|
|
||||||
|
|
||||||
blockEntity.energyHandler.ifPresent(handler -> {
|
blockEntity.energyHandler.ifPresent(handler -> {
|
||||||
int energy = handler.getEnergyStored();
|
int energy = handler.getEnergyStored();
|
||||||
blockEntity.energy = energy;
|
blockEntity.energy = energy;
|
||||||
|
@ -118,9 +115,7 @@ public class ChargingStationBlockEntity extends BlockEntity implements WorldlyCo
|
||||||
handler.receiveEnergy(CHARGE_SPEED, false);
|
handler.receiveEnergy(CHARGE_SPEED, false);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else if (!blockEntity.getItem(SLOT_FUEL).isEmpty()) {
|
||||||
if (blockEntity.getItem(SLOT_FUEL).isEmpty()) return;
|
|
||||||
|
|
||||||
AtomicBoolean flag = new AtomicBoolean(false);
|
AtomicBoolean flag = new AtomicBoolean(false);
|
||||||
blockEntity.energyHandler.ifPresent(handler -> {
|
blockEntity.energyHandler.ifPresent(handler -> {
|
||||||
if (handler.getEnergyStored() >= handler.getMaxEnergyStored()) {
|
if (handler.getEnergyStored() >= handler.getMaxEnergyStored()) {
|
||||||
|
@ -135,6 +130,7 @@ public class ChargingStationBlockEntity extends BlockEntity implements WorldlyCo
|
||||||
blockEntity.fuelTick = burnTime;
|
blockEntity.fuelTick = burnTime;
|
||||||
blockEntity.maxFuelTick = burnTime;
|
blockEntity.maxFuelTick = burnTime;
|
||||||
fuel.shrink(1);
|
fuel.shrink(1);
|
||||||
|
blockEntity.setChanged();
|
||||||
} else if (fuel.getItem().isEdible()) {
|
} else if (fuel.getItem().isEdible()) {
|
||||||
var properties = fuel.getFoodProperties(null);
|
var properties = fuel.getFoodProperties(null);
|
||||||
if (properties == null) return;
|
if (properties == null) return;
|
||||||
|
@ -151,6 +147,7 @@ public class ChargingStationBlockEntity extends BlockEntity implements WorldlyCo
|
||||||
|
|
||||||
blockEntity.fuelTick = tick;
|
blockEntity.fuelTick = tick;
|
||||||
blockEntity.maxFuelTick = tick;
|
blockEntity.maxFuelTick = tick;
|
||||||
|
blockEntity.setChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -165,6 +162,7 @@ public class ChargingStationBlockEntity extends BlockEntity implements WorldlyCo
|
||||||
handler.extractEnergy(Math.min(CHARGE_OTHER_SPEED, handler.getEnergyStored()), false);
|
handler.extractEnergy(Math.min(CHARGE_OTHER_SPEED, handler.getEnergyStored()), false);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
this.setChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void chargeItemStack(EnergyStorage handler) {
|
private void chargeItemStack(EnergyStorage handler) {
|
||||||
|
@ -177,6 +175,7 @@ public class ChargingStationBlockEntity extends BlockEntity implements WorldlyCo
|
||||||
handler.extractEnergy(Math.min(CHARGE_OTHER_SPEED, handler.getEnergyStored()), false);
|
handler.extractEnergy(Math.min(CHARGE_OTHER_SPEED, handler.getEnergyStored()), false);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
this.setChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
public NonNullList<ItemStack> getItems() {
|
public NonNullList<ItemStack> getItems() {
|
||||||
|
@ -188,9 +187,7 @@ public class ChargingStationBlockEntity extends BlockEntity implements WorldlyCo
|
||||||
super.load(pTag);
|
super.load(pTag);
|
||||||
|
|
||||||
if (pTag.contains("Energy")) {
|
if (pTag.contains("Energy")) {
|
||||||
getCapability(ForgeCapabilities.ENERGY).ifPresent(handler -> {
|
getCapability(ForgeCapabilities.ENERGY).ifPresent(handler -> ((EnergyStorage) handler).deserializeNBT(pTag.get("Energy")));
|
||||||
((EnergyStorage) handler).deserializeNBT(pTag.get("Energy"));
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
this.fuelTick = pTag.getInt("FuelTick");
|
this.fuelTick = pTag.getInt("FuelTick");
|
||||||
this.maxFuelTick = pTag.getInt("MaxFuelTick");
|
this.maxFuelTick = pTag.getInt("MaxFuelTick");
|
||||||
|
@ -302,7 +299,13 @@ public class ChargingStationBlockEntity extends BlockEntity implements WorldlyCo
|
||||||
return energyHandler.cast();
|
return energyHandler.cast();
|
||||||
}
|
}
|
||||||
if (!this.remove && side != null && cap == ForgeCapabilities.ITEM_HANDLER) {
|
if (!this.remove && side != null && cap == ForgeCapabilities.ITEM_HANDLER) {
|
||||||
return itemHandlers[0].cast();
|
if (side == Direction.UP) {
|
||||||
|
return itemHandlers[0].cast();
|
||||||
|
} else if (side == Direction.DOWN) {
|
||||||
|
return itemHandlers[1].cast();
|
||||||
|
} else {
|
||||||
|
return itemHandlers[2].cast();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return super.getCapability(cap, side);
|
return super.getCapability(cap, side);
|
||||||
}
|
}
|
||||||
|
@ -317,7 +320,7 @@ public class ChargingStationBlockEntity extends BlockEntity implements WorldlyCo
|
||||||
@Override
|
@Override
|
||||||
public void reviveCaps() {
|
public void reviveCaps() {
|
||||||
super.reviveCaps();
|
super.reviveCaps();
|
||||||
this.itemHandlers = SidedInvWrapper.create(this, Direction.NORTH);
|
this.itemHandlers = SidedInvWrapper.create(this, Direction.NORTH, Direction.DOWN, Direction.NORTH);
|
||||||
this.energyHandler = LazyOptional.of(() -> new EnergyStorage(MAX_ENERGY));
|
this.energyHandler = LazyOptional.of(() -> new EnergyStorage(MAX_ENERGY));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue