diff --git a/src/main/java/ru/dbotthepony/mc/otm/block/entity/BlockEntityBatteryBank.java b/src/main/java/ru/dbotthepony/mc/otm/block/entity/BlockEntityBatteryBank.java index 805aafba4..fa3bfbf78 100644 --- a/src/main/java/ru/dbotthepony/mc/otm/block/entity/BlockEntityBatteryBank.java +++ b/src/main/java/ru/dbotthepony/mc/otm/block/entity/BlockEntityBatteryBank.java @@ -68,7 +68,13 @@ public class BlockEntityBatteryBank extends BlockEntityMattery { } - public record BatteryBankEnergy(BlockEntityBatteryBank tile, BankMode mode) implements IMatteryEnergyStorage { + public class BatteryBankEnergy implements IMatteryEnergyStorage { + private final BankMode mode; + + public BatteryBankEnergy(BankMode mode) { + this.mode = mode; + } + public enum BankMode { RECEIVE, EXTRACT, @@ -95,11 +101,11 @@ public class BlockEntityBatteryBank extends BlockEntityMattery { } BatteryBankDistribution getDistribution(boolean mode) { - Fraction[] distribution = new Fraction[tile.battery_container.getContainerSize()]; + Fraction[] distribution = new Fraction[battery_container.getContainerSize()]; Fraction summ = Fraction.ZERO; - for (int i = 0; i < tile.battery_container.getContainerSize(); i++) { - ItemStack stack = tile.battery_container.getItem(i); + for (int i = 0; i < battery_container.getContainerSize(); i++) { + ItemStack stack = battery_container.getItem(i); if (!stack.isEmpty()) { Optional cap = stack.getCapability(MatteryCapability.ENERGY).resolve(); @@ -123,7 +129,7 @@ public class BlockEntityBatteryBank extends BlockEntityMattery { } if (summ.compareTo(Fraction.ZERO) != 0) { - for (int i = 0; i < tile.battery_container.getContainerSize(); i++) { + for (int i = 0; i < battery_container.getContainerSize(); i++) { distribution[i] = distribution[i].div(summ); } } @@ -140,9 +146,9 @@ public class BlockEntityBatteryBank extends BlockEntityMattery { Fraction[] distList = distribution.distribution; Fraction summ = Fraction.ZERO; - for (int i = 0; i < tile.battery_container.getContainerSize(); i++) { + for (int i = 0; i < battery_container.getContainerSize(); i++) { if (!distList[i].equals(Fraction.ZERO)) { - ItemStack stack = tile.battery_container.getItem(i); + ItemStack stack = battery_container.getItem(i); if (!stack.isEmpty()) { Optional cap = stack.getCapability(MatteryCapability.ENERGY).resolve(); @@ -162,6 +168,10 @@ public class BlockEntityBatteryBank extends BlockEntityMattery { } } + if (!simulate && !summ.isZero()) { + setChangedLight(); + } + return summ; } @@ -191,8 +201,8 @@ public class BlockEntityBatteryBank extends BlockEntityMattery { public Fraction getBatteryLevel() { Fraction result = Fraction.ZERO; - for (int i = 0; i < tile.battery_container.getContainerSize(); i++) { - ItemStack stack = tile.battery_container.getItem(i); + for (int i = 0; i < battery_container.getContainerSize(); i++) { + ItemStack stack = battery_container.getItem(i); if (!stack.isEmpty()) { Optional cap = stack.getCapability(MatteryCapability.ENERGY).resolve(); @@ -217,8 +227,8 @@ public class BlockEntityBatteryBank extends BlockEntityMattery { public Fraction getMaxBatteryLevel() { Fraction result = Fraction.ZERO; - for (int i = 0; i < tile.battery_container.getContainerSize(); i++) { - ItemStack stack = tile.battery_container.getItem(i); + for (int i = 0; i < battery_container.getContainerSize(); i++) { + ItemStack stack = battery_container.getItem(i); if (!stack.isEmpty()) { Optional cap = stack.getCapability(MatteryCapability.ENERGY).resolve(); @@ -239,13 +249,13 @@ public class BlockEntityBatteryBank extends BlockEntityMattery { } } - public final BatteryBankEnergy energy_receiver = new BatteryBankEnergy(this, BatteryBankEnergy.BankMode.RECEIVE); + public final BatteryBankEnergy energy_receiver = new BatteryBankEnergy(BatteryBankEnergy.BankMode.RECEIVE); private LazyOptional energy_receiver_resolver = LazyOptional.of(() -> energy_receiver); - public final BatteryBankEnergy energy_extractor = new BatteryBankEnergy(this, BatteryBankEnergy.BankMode.EXTRACT); + public final BatteryBankEnergy energy_extractor = new BatteryBankEnergy(BatteryBankEnergy.BankMode.EXTRACT); private LazyOptional energy_extractor_resolver = LazyOptional.of(() -> energy_extractor); - public final BatteryBankEnergy energy = new BatteryBankEnergy(this, BatteryBankEnergy.BankMode.BIDIRECTIONAL); + public final BatteryBankEnergy energy = new BatteryBankEnergy(BatteryBankEnergy.BankMode.BIDIRECTIONAL); private LazyOptional energy_resolver = LazyOptional.of(() -> energy); protected boolean valid = true;