From 4f80a8c6516f819eb7b740df945c4e0b675d55dd Mon Sep 17 00:00:00 2001 From: modmuss50 Date: Tue, 10 Sep 2019 14:09:15 +0100 Subject: [PATCH 1/2] start on new power api --- build.gradle | 2 + .../blockentity/cable/CableBlockEntity.java | 103 ++++++------------ .../generator/SolarPanelBlockEntity.java | 12 +- .../storage/AdjustableSUBlockEntity.java | 9 +- .../storage/EnergyStorageBlockEntity.java | 8 +- .../storage/HighVoltageSUBlockEntity.java | 6 +- .../storage/LowVoltageSUBlockEntity.java | 6 +- .../storage/MediumVoltageSUBlockEntity.java | 6 +- .../idsu/InterdimensionalSUBlockEntity.java | 10 +- .../storage/lesu/LapotronicSUBlockEntity.java | 4 +- .../EVTransformerBlockEntity.java | 4 +- .../HVTransformerBlockEntity.java | 6 +- .../LVTransformerBlockEntity.java | 6 +- .../MVTransformerBlockEntity.java | 6 +- .../transformers/TransformerBlockEntity.java | 29 ++--- .../techreborn/blocks/cable/BlockCable.java | 6 +- .../events/StackToolTipHandler.java | 13 ++- src/main/java/techreborn/init/TRContent.java | 43 ++++---- .../items/armor/ItemCloakingDevice.java | 17 ++- .../items/armor/ItemLapotronicOrbpack.java | 24 ++-- .../items/armor/ItemLithiumIonBatpack.java | 20 ++-- .../techreborn/items/battery/ItemBattery.java | 24 ++-- .../items/battery/ItemEnergyCrystal.java | 3 +- .../items/battery/ItemLapotronCrystal.java | 3 +- .../items/battery/ItemLapotronicOrb.java | 3 +- .../items/battery/ItemLithiumIonBattery.java | 3 +- .../items/battery/ItemRedCellBattery.java | 3 +- .../techreborn/items/tool/ItemChainsaw.java | 17 ++- .../techreborn/items/tool/ItemDebugTool.java | 12 +- .../java/techreborn/items/tool/ItemDrill.java | 17 ++- .../techreborn/items/tool/ItemJackhammer.java | 18 ++- .../items/tool/advanced/ItemRockCutter.java | 17 ++- .../items/tool/basic/ItemElectricTreetap.java | 17 +-- .../items/tool/industrial/ItemNanosaber.java | 25 +++-- .../items/tool/industrial/ItemOmniTool.java | 23 ++-- 35 files changed, 275 insertions(+), 250 deletions(-) diff --git a/build.gradle b/build.gradle index ec8a09184..6e37b03b1 100644 --- a/build.gradle +++ b/build.gradle @@ -99,6 +99,8 @@ dependencies { modCompile ('com.github.Virtuoel:Towelette:519538e54b') { transitive = false } + + compile 'teamreborn:energy:0.0.5' } processResources { diff --git a/src/main/java/techreborn/blockentity/cable/CableBlockEntity.java b/src/main/java/techreborn/blockentity/cable/CableBlockEntity.java index 31459cd2f..02fde65ba 100644 --- a/src/main/java/techreborn/blockentity/cable/CableBlockEntity.java +++ b/src/main/java/techreborn/blockentity/cable/CableBlockEntity.java @@ -37,10 +37,13 @@ import net.minecraft.util.Tickable; import net.minecraft.util.math.Direction; import reborncore.api.IListInfoProvider; import reborncore.api.IToolDrop; -import reborncore.api.power.EnergyBlockEntity; -import reborncore.api.power.EnumPowerTier; +import reborncore.common.powerSystem.PowerAcceptorBlockEntity; import reborncore.common.powerSystem.PowerSystem; import reborncore.common.util.StringUtils; +import team.reborn.energy.Energy; +import team.reborn.energy.EnergySide; +import team.reborn.energy.EnergyStorage; +import team.reborn.energy.EnergyTier; import techreborn.blocks.cable.BlockCable; import techreborn.init.TRBlockEntities; import techreborn.init.TRContent; @@ -54,7 +57,7 @@ import java.util.List; */ public class CableBlockEntity extends BlockEntity - implements Tickable, IListInfoProvider, IToolDrop, EnergyBlockEntity { + implements Tickable, IListInfoProvider, IToolDrop, EnergyStorage { private double energy = 0; private int transferRate = 0; @@ -124,21 +127,17 @@ public class CableBlockEntity extends BlockEntity ticksSinceLastChange = 0; } - ArrayList acceptors = new ArrayList(); + ArrayList acceptors = new ArrayList(); for (Direction face : Direction.values()) { BlockEntity blockEntity = world.getBlockEntity(pos.offset(face)); if (blockEntity == null) { continue; - } else if (blockEntity instanceof EnergyBlockEntity) { - EnergyBlockEntity acceptor = (EnergyBlockEntity) blockEntity; - if (blockEntity instanceof CableBlockEntity && energy <= acceptor.getEnergy()) { + } else if (Energy.valid(blockEntity)) { + if (blockEntity instanceof CableBlockEntity && energy <= Energy.of(blockEntity).side(EnergySide.fromMinecraft(face)).getEnergy()) { continue; } - if (!acceptor.canAcceptEnergy(face.getOpposite())) { - continue; - } - acceptors.add(acceptor); + acceptors.add(blockEntity); if (!sendingFace.contains(face)) { sendingFace.add(face); } @@ -150,11 +149,9 @@ public class CableBlockEntity extends BlockEntity } Collections.shuffle(acceptors); acceptors.forEach(blockEntity -> { - double drain = Math.min(energy, transferRate); - if (drain > 0 && blockEntity.addEnergy(drain, true) > 0) { - double move = blockEntity.addEnergy(drain, false); - useEnergy(move, false); - } + Energy.of(this) + .into(Energy.of(blockEntity)) + .move(); }); } @@ -176,52 +173,15 @@ public class CableBlockEntity extends BlockEntity return new ItemStack(getCableType().block); } - @Override + public double getEnergy() { - return energy; + return getStored(EnergySide.UNKNOWN); } - @Override public void setEnergy(double energy) { - this.energy = energy; + setStored(energy); } - @Override - public double getMaxPower() { - return transferRate * 4; - } - - @Override - public boolean canAddEnergy(double energyIn) { - return getEnergy() + energyIn <= getMaxPower(); - } - - @Override - public double addEnergy(double energy) { - return addEnergy(energy, false); - } - - @Override - public double addEnergy(double energyIn, boolean simulate) { - double energyReceived = Math.min(getMaxPower(), Math.min(getMaxPower() - getEnergy(), energyIn)); - - if (!simulate) { - setEnergy(getEnergy() + energyReceived); - } - return energyReceived; - } - - @Override - public boolean canUseEnergy(double energy) { - return this.energy >= energy; - } - - @Override - public double useEnergy(double energy) { - return useEnergy(energy, false); - } - - @Override public double useEnergy(double energyOut, boolean simulate) { if (energyOut > energy) { energyOut = energy; @@ -232,31 +192,40 @@ public class CableBlockEntity extends BlockEntity return energyOut; } - @Override public boolean canAcceptEnergy(Direction direction) { if (sendingFace.contains(direction)) { return false; } - return getMaxPower() != getEnergy(); + return getMaxStoredPower() != getEnergy(); } @Override - public boolean canProvideEnergy(Direction direction) { - return true; - } - - @Override - public double getMaxOutput() { + public double getMaxInput(EnergySide side) { return transferRate; } @Override - public double getMaxInput() { + public double getMaxOutput(EnergySide side) { return transferRate; } @Override - public EnumPowerTier getTier() { - return EnumPowerTier.getTier(cableType.transferRate); + public double getMaxStoredPower() { + return transferRate * 4; + } + + @Override + public EnergyTier getTier() { + return PowerAcceptorBlockEntity.getTier(cableType.transferRate); + } + + @Override + public double getStored(EnergySide face) { + return energy; + } + + @Override + public void setStored(double amount) { + this.energy = amount; } } diff --git a/src/main/java/techreborn/blockentity/generator/SolarPanelBlockEntity.java b/src/main/java/techreborn/blockentity/generator/SolarPanelBlockEntity.java index ff994704d..fb8aafecd 100644 --- a/src/main/java/techreborn/blockentity/generator/SolarPanelBlockEntity.java +++ b/src/main/java/techreborn/blockentity/generator/SolarPanelBlockEntity.java @@ -24,24 +24,24 @@ package techreborn.blockentity.generator; -import net.minecraft.text.LiteralText; -import net.minecraft.util.Formatting; import net.minecraft.block.Block; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundTag; +import net.minecraft.text.LiteralText; import net.minecraft.text.Text; +import net.minecraft.util.Formatting; import net.minecraft.util.math.Direction; import reborncore.api.IToolDrop; -import reborncore.api.power.EnumPowerTier; -import reborncore.common.powerSystem.PowerSystem; import reborncore.common.blocks.BlockMachineBase; import reborncore.common.powerSystem.PowerAcceptorBlockEntity; +import reborncore.common.powerSystem.PowerSystem; import reborncore.common.util.StringUtils; +import team.reborn.energy.EnergyTier; import techreborn.blocks.generator.BlockSolarPanel; +import techreborn.init.TRBlockEntities; import techreborn.init.TRContent; import techreborn.init.TRContent.SolarPanels; -import techreborn.init.TRBlockEntities; import java.util.List; @@ -127,7 +127,7 @@ public class SolarPanelBlockEntity extends PowerAcceptorBlockEntity implements I } @Override - public EnumPowerTier getTier() { + public EnergyTier getTier() { return panel.powerTier; } diff --git a/src/main/java/techreborn/blockentity/storage/AdjustableSUBlockEntity.java b/src/main/java/techreborn/blockentity/storage/AdjustableSUBlockEntity.java index 8e88c9dd8..94f5ac745 100644 --- a/src/main/java/techreborn/blockentity/storage/AdjustableSUBlockEntity.java +++ b/src/main/java/techreborn/blockentity/storage/AdjustableSUBlockEntity.java @@ -27,15 +27,16 @@ package techreborn.blockentity.storage; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundTag; -import reborncore.api.power.EnumPowerTier; import reborncore.api.blockentity.IUpgrade; import reborncore.client.containerBuilder.IContainerProvider; import reborncore.client.containerBuilder.builder.BuiltContainer; import reborncore.client.containerBuilder.builder.ContainerBuilder; import reborncore.common.util.RebornInventory; +import team.reborn.energy.EnergySide; +import team.reborn.energy.EnergyTier; import techreborn.config.TechRebornConfig; -import techreborn.init.TRContent; import techreborn.init.TRBlockEntities; +import techreborn.init.TRContent; public class AdjustableSUBlockEntity extends EnergyStorageBlockEntity implements IContainerProvider { @@ -44,7 +45,7 @@ public class AdjustableSUBlockEntity extends EnergyStorageBlockEntity implements public int superconductors = 0; public AdjustableSUBlockEntity() { - super(TRBlockEntities.ADJUSTABLE_SU, "ADJUSTABLE_SU", 4, TRContent.Machine.ADJUSTABLE_SU.block, EnumPowerTier.INSANE, TechRebornConfig.aesuMaxInput, TechRebornConfig.aesuMaxOutput, TechRebornConfig.aesuMaxEnergy); + super(TRBlockEntities.ADJUSTABLE_SU, "ADJUSTABLE_SU", 4, TRContent.Machine.ADJUSTABLE_SU.block, EnergyTier.INSANE, TechRebornConfig.aesuMaxInput, TechRebornConfig.aesuMaxOutput, TechRebornConfig.aesuMaxEnergy); } @Override @@ -120,7 +121,7 @@ public class AdjustableSUBlockEntity extends EnergyStorageBlockEntity implements } @Override - public double getMaxOutput() { + public double getMaxOutput(EnergySide side) { return OUTPUT; } diff --git a/src/main/java/techreborn/blockentity/storage/EnergyStorageBlockEntity.java b/src/main/java/techreborn/blockentity/storage/EnergyStorageBlockEntity.java index 78e6f7874..b59a7655e 100644 --- a/src/main/java/techreborn/blockentity/storage/EnergyStorageBlockEntity.java +++ b/src/main/java/techreborn/blockentity/storage/EnergyStorageBlockEntity.java @@ -30,11 +30,11 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.util.math.Direction; import reborncore.api.IToolDrop; -import reborncore.api.power.EnumPowerTier; import reborncore.api.blockentity.InventoryProvider; import reborncore.common.powerSystem.ExternalPowerSystems; import reborncore.common.powerSystem.PowerAcceptorBlockEntity; import reborncore.common.util.RebornInventory; +import team.reborn.energy.EnergyTier; import techreborn.blocks.storage.BlockEnergyStorage; /** @@ -46,12 +46,12 @@ public class EnergyStorageBlockEntity extends PowerAcceptorBlockEntity public RebornInventory inventory; public String name; public Block wrenchDrop; - public EnumPowerTier tier; + public EnergyTier tier; public int maxInput; public int maxOutput; public int maxStorage; - public EnergyStorageBlockEntity(BlockEntityType blockEntityType, String name, int invSize, Block wrenchDrop, EnumPowerTier tier, int maxInput, int maxOuput, int maxStorage) { + public EnergyStorageBlockEntity(BlockEntityType blockEntityType, String name, int invSize, Block wrenchDrop, EnergyTier tier, int maxInput, int maxOuput, int maxStorage) { super(blockEntityType); inventory = new RebornInventory<>(invSize, name + "BlockEntity", 64, this); this.wrenchDrop = wrenchDrop; @@ -90,7 +90,7 @@ public class EnergyStorageBlockEntity extends PowerAcceptorBlockEntity public boolean canAcceptEnergy(Direction direction) { return getFacing() != direction; } - + @Override public boolean canProvideEnergy(Direction direction) { return getFacing() == direction; diff --git a/src/main/java/techreborn/blockentity/storage/HighVoltageSUBlockEntity.java b/src/main/java/techreborn/blockentity/storage/HighVoltageSUBlockEntity.java index 6eff88238..bdfea3333 100644 --- a/src/main/java/techreborn/blockentity/storage/HighVoltageSUBlockEntity.java +++ b/src/main/java/techreborn/blockentity/storage/HighVoltageSUBlockEntity.java @@ -25,12 +25,12 @@ package techreborn.blockentity.storage; import net.minecraft.entity.player.PlayerEntity; -import reborncore.api.power.EnumPowerTier; import reborncore.client.containerBuilder.IContainerProvider; import reborncore.client.containerBuilder.builder.BuiltContainer; import reborncore.client.containerBuilder.builder.ContainerBuilder; -import techreborn.init.TRContent; +import team.reborn.energy.EnergyTier; import techreborn.init.TRBlockEntities; +import techreborn.init.TRContent; /** * Created by modmuss50 on 14/03/2016. @@ -42,7 +42,7 @@ public class HighVoltageSUBlockEntity extends EnergyStorageBlockEntity implement * MFSU should store 40M FE with 2048 FE/t I/O */ public HighVoltageSUBlockEntity() { - super(TRBlockEntities.HIGH_VOLTAGE_SU, "HIGH_VOLTAGE_SU", 2, TRContent.Machine.HIGH_VOLTAGE_SU.block, EnumPowerTier.HIGH, 512, 512, 10_000_000); + super(TRBlockEntities.HIGH_VOLTAGE_SU, "HIGH_VOLTAGE_SU", 2, TRContent.Machine.HIGH_VOLTAGE_SU.block, EnergyTier.HIGH, 512, 512, 10_000_000); } @Override diff --git a/src/main/java/techreborn/blockentity/storage/LowVoltageSUBlockEntity.java b/src/main/java/techreborn/blockentity/storage/LowVoltageSUBlockEntity.java index 063f41549..e84a5a819 100644 --- a/src/main/java/techreborn/blockentity/storage/LowVoltageSUBlockEntity.java +++ b/src/main/java/techreborn/blockentity/storage/LowVoltageSUBlockEntity.java @@ -25,12 +25,12 @@ package techreborn.blockentity.storage; import net.minecraft.entity.player.PlayerEntity; -import reborncore.api.power.EnumPowerTier; import reborncore.client.containerBuilder.IContainerProvider; import reborncore.client.containerBuilder.builder.BuiltContainer; import reborncore.client.containerBuilder.builder.ContainerBuilder; -import techreborn.init.TRContent; +import team.reborn.energy.EnergyTier; import techreborn.init.TRBlockEntities; +import techreborn.init.TRContent; /** * Created by modmuss50 on 14/03/2016. @@ -38,7 +38,7 @@ import techreborn.init.TRBlockEntities; public class LowVoltageSUBlockEntity extends EnergyStorageBlockEntity implements IContainerProvider { public LowVoltageSUBlockEntity() { - super(TRBlockEntities.LOW_VOLTAGE_SU, "BatBox", 2, TRContent.Machine.LOW_VOLTAGE_SU.block, EnumPowerTier.LOW, 32, 32, 40000); + super(TRBlockEntities.LOW_VOLTAGE_SU, "BatBox", 2, TRContent.Machine.LOW_VOLTAGE_SU.block, EnergyTier.LOW, 32, 32, 40000); } @Override diff --git a/src/main/java/techreborn/blockentity/storage/MediumVoltageSUBlockEntity.java b/src/main/java/techreborn/blockentity/storage/MediumVoltageSUBlockEntity.java index 6b9fe5d99..382846296 100644 --- a/src/main/java/techreborn/blockentity/storage/MediumVoltageSUBlockEntity.java +++ b/src/main/java/techreborn/blockentity/storage/MediumVoltageSUBlockEntity.java @@ -25,12 +25,12 @@ package techreborn.blockentity.storage; import net.minecraft.entity.player.PlayerEntity; -import reborncore.api.power.EnumPowerTier; import reborncore.client.containerBuilder.IContainerProvider; import reborncore.client.containerBuilder.builder.BuiltContainer; import reborncore.client.containerBuilder.builder.ContainerBuilder; -import techreborn.init.TRContent; +import team.reborn.energy.EnergyTier; import techreborn.init.TRBlockEntities; +import techreborn.init.TRContent; /** * Created by modmuss50 on 14/03/2016. @@ -42,7 +42,7 @@ public class MediumVoltageSUBlockEntity extends EnergyStorageBlockEntity impleme * MFE should store 1.2M FE with 512 FE/t I/O */ public MediumVoltageSUBlockEntity() { - super(TRBlockEntities.MEDIUM_VOLTAGE_SU, "MEDIUM_VOLTAGE_SU", 2, TRContent.Machine.MEDIUM_VOLTAGE_SU.block, EnumPowerTier.MEDIUM, 128, 128, 300000); + super(TRBlockEntities.MEDIUM_VOLTAGE_SU, "MEDIUM_VOLTAGE_SU", 2, TRContent.Machine.MEDIUM_VOLTAGE_SU.block, EnergyTier.MEDIUM, 128, 128, 300000); } @Override diff --git a/src/main/java/techreborn/blockentity/storage/idsu/InterdimensionalSUBlockEntity.java b/src/main/java/techreborn/blockentity/storage/idsu/InterdimensionalSUBlockEntity.java index f4929ffd7..4b9154156 100644 --- a/src/main/java/techreborn/blockentity/storage/idsu/InterdimensionalSUBlockEntity.java +++ b/src/main/java/techreborn/blockentity/storage/idsu/InterdimensionalSUBlockEntity.java @@ -27,14 +27,14 @@ package techreborn.blockentity.storage.idsu; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.nbt.CompoundTag; import org.apache.commons.lang3.StringUtils; -import reborncore.api.power.EnumPowerTier; import reborncore.client.containerBuilder.IContainerProvider; import reborncore.client.containerBuilder.builder.BuiltContainer; import reborncore.client.containerBuilder.builder.ContainerBuilder; -import techreborn.config.TechRebornConfig; -import techreborn.init.TRContent; -import techreborn.init.TRBlockEntities; +import team.reborn.energy.EnergyTier; import techreborn.blockentity.storage.EnergyStorageBlockEntity; +import techreborn.config.TechRebornConfig; +import techreborn.init.TRBlockEntities; +import techreborn.init.TRContent; public class InterdimensionalSUBlockEntity extends EnergyStorageBlockEntity implements IContainerProvider { @@ -44,7 +44,7 @@ public class InterdimensionalSUBlockEntity extends EnergyStorageBlockEntity impl private double clientEnergy; public InterdimensionalSUBlockEntity() { - super(TRBlockEntities.INTERDIMENSIONAL_SU, "IDSU", 2, TRContent.Machine.INTERDIMENSIONAL_SU.block, EnumPowerTier.EXTREME, TechRebornConfig.idsuMaxInput, TechRebornConfig.idsuMaxOutput, TechRebornConfig.idsuMaxEnergy); + super(TRBlockEntities.INTERDIMENSIONAL_SU, "IDSU", 2, TRContent.Machine.INTERDIMENSIONAL_SU.block, EnergyTier.EXTREME, TechRebornConfig.idsuMaxInput, TechRebornConfig.idsuMaxOutput, TechRebornConfig.idsuMaxEnergy); } @Override diff --git a/src/main/java/techreborn/blockentity/storage/lesu/LapotronicSUBlockEntity.java b/src/main/java/techreborn/blockentity/storage/lesu/LapotronicSUBlockEntity.java index 9002b1467..e5d059599 100644 --- a/src/main/java/techreborn/blockentity/storage/lesu/LapotronicSUBlockEntity.java +++ b/src/main/java/techreborn/blockentity/storage/lesu/LapotronicSUBlockEntity.java @@ -29,10 +29,10 @@ import net.minecraft.block.entity.BlockEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; -import reborncore.api.power.EnumPowerTier; import reborncore.client.containerBuilder.IContainerProvider; import reborncore.client.containerBuilder.builder.BuiltContainer; import reborncore.client.containerBuilder.builder.ContainerBuilder; +import team.reborn.energy.EnergyTier; import techreborn.blockentity.storage.EnergyStorageBlockEntity; import techreborn.blocks.storage.BlockLapotronicSU; import techreborn.config.TechRebornConfig; @@ -47,7 +47,7 @@ public class LapotronicSUBlockEntity extends EnergyStorageBlockEntity implements private ArrayList countedNetworks = new ArrayList<>(); public LapotronicSUBlockEntity() { - super(TRBlockEntities.LAPOTRONIC_SU, "LESU", 2, TRContent.Machine.LAPOTRONIC_SU.block, EnumPowerTier.INSANE, 8192, TechRebornConfig.lesuBaseOutput, 1_000_000); + super(TRBlockEntities.LAPOTRONIC_SU, "LESU", 2, TRContent.Machine.LAPOTRONIC_SU.block, EnergyTier.INSANE, 8192, TechRebornConfig.lesuBaseOutput, 1_000_000); checkOverfill = false; } diff --git a/src/main/java/techreborn/blockentity/transformers/EVTransformerBlockEntity.java b/src/main/java/techreborn/blockentity/transformers/EVTransformerBlockEntity.java index 65674da01..5c3ddf18c 100644 --- a/src/main/java/techreborn/blockentity/transformers/EVTransformerBlockEntity.java +++ b/src/main/java/techreborn/blockentity/transformers/EVTransformerBlockEntity.java @@ -24,7 +24,7 @@ package techreborn.blockentity.transformers; -import reborncore.api.power.EnumPowerTier; +import team.reborn.energy.EnergyTier; import techreborn.init.TRBlockEntities; import techreborn.init.TRContent; @@ -34,7 +34,7 @@ import techreborn.init.TRContent; public class EVTransformerBlockEntity extends TransformerBlockEntity { public EVTransformerBlockEntity() { - super(TRBlockEntities.EV_TRANSFORMER, "EVTransformer", TRContent.Machine.EV_TRANSFORMER.block, EnumPowerTier.INSANE); + super(TRBlockEntities.EV_TRANSFORMER, "EVTransformer", TRContent.Machine.EV_TRANSFORMER.block, EnergyTier.INSANE); } } diff --git a/src/main/java/techreborn/blockentity/transformers/HVTransformerBlockEntity.java b/src/main/java/techreborn/blockentity/transformers/HVTransformerBlockEntity.java index e4c43ac7f..dd8ed63b8 100644 --- a/src/main/java/techreborn/blockentity/transformers/HVTransformerBlockEntity.java +++ b/src/main/java/techreborn/blockentity/transformers/HVTransformerBlockEntity.java @@ -24,9 +24,9 @@ package techreborn.blockentity.transformers; -import reborncore.api.power.EnumPowerTier; -import techreborn.init.TRContent; +import team.reborn.energy.EnergyTier; import techreborn.init.TRBlockEntities; +import techreborn.init.TRContent; /** * Created by modmuss50 on 16/03/2016. @@ -34,7 +34,7 @@ import techreborn.init.TRBlockEntities; public class HVTransformerBlockEntity extends TransformerBlockEntity { public HVTransformerBlockEntity() { - super(TRBlockEntities.HV_TRANSFORMER, "HVTransformer", TRContent.Machine.HV_TRANSFORMER.block, EnumPowerTier.EXTREME); + super(TRBlockEntities.HV_TRANSFORMER, "HVTransformer", TRContent.Machine.HV_TRANSFORMER.block, EnergyTier.EXTREME); } } diff --git a/src/main/java/techreborn/blockentity/transformers/LVTransformerBlockEntity.java b/src/main/java/techreborn/blockentity/transformers/LVTransformerBlockEntity.java index b187f0cd9..0693d9cfd 100644 --- a/src/main/java/techreborn/blockentity/transformers/LVTransformerBlockEntity.java +++ b/src/main/java/techreborn/blockentity/transformers/LVTransformerBlockEntity.java @@ -24,9 +24,9 @@ package techreborn.blockentity.transformers; -import reborncore.api.power.EnumPowerTier; -import techreborn.init.TRContent; +import team.reborn.energy.EnergyTier; import techreborn.init.TRBlockEntities; +import techreborn.init.TRContent; /** * Created by modmuss50 on 16/03/2016. @@ -34,7 +34,7 @@ import techreborn.init.TRBlockEntities; public class LVTransformerBlockEntity extends TransformerBlockEntity { public LVTransformerBlockEntity() { - super(TRBlockEntities.LV_TRANSFORMER, "LVTransformer", TRContent.Machine.LV_TRANSFORMER.block, EnumPowerTier.MEDIUM); + super(TRBlockEntities.LV_TRANSFORMER, "LVTransformer", TRContent.Machine.LV_TRANSFORMER.block, EnergyTier.MEDIUM); } } diff --git a/src/main/java/techreborn/blockentity/transformers/MVTransformerBlockEntity.java b/src/main/java/techreborn/blockentity/transformers/MVTransformerBlockEntity.java index b8e785d68..ffa0799be 100644 --- a/src/main/java/techreborn/blockentity/transformers/MVTransformerBlockEntity.java +++ b/src/main/java/techreborn/blockentity/transformers/MVTransformerBlockEntity.java @@ -24,9 +24,9 @@ package techreborn.blockentity.transformers; -import reborncore.api.power.EnumPowerTier; -import techreborn.init.TRContent; +import team.reborn.energy.EnergyTier; import techreborn.init.TRBlockEntities; +import techreborn.init.TRContent; /** * Created by modmuss50 on 16/03/2016. @@ -34,6 +34,6 @@ import techreborn.init.TRBlockEntities; public class MVTransformerBlockEntity extends TransformerBlockEntity { public MVTransformerBlockEntity() { - super(TRBlockEntities.MV_TRANSFORMER, "MVTransformer", TRContent.Machine.MV_TRANSFORMER.block, EnumPowerTier.HIGH); + super(TRBlockEntities.MV_TRANSFORMER, "MVTransformer", TRContent.Machine.MV_TRANSFORMER.block, EnergyTier.HIGH); } } diff --git a/src/main/java/techreborn/blockentity/transformers/TransformerBlockEntity.java b/src/main/java/techreborn/blockentity/transformers/TransformerBlockEntity.java index f1e655c03..1226d3776 100644 --- a/src/main/java/techreborn/blockentity/transformers/TransformerBlockEntity.java +++ b/src/main/java/techreborn/blockentity/transformers/TransformerBlockEntity.java @@ -24,20 +24,21 @@ package techreborn.blockentity.transformers; -import net.minecraft.text.LiteralText; -import net.minecraft.text.Text; -import net.minecraft.util.Formatting; import net.minecraft.block.Block; import net.minecraft.block.entity.BlockEntityType; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; +import net.minecraft.text.LiteralText; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; import net.minecraft.util.math.Direction; import reborncore.api.IListInfoProvider; import reborncore.api.IToolDrop; -import reborncore.api.power.EnumPowerTier; -import reborncore.common.powerSystem.PowerSystem; import reborncore.common.powerSystem.PowerAcceptorBlockEntity; +import reborncore.common.powerSystem.PowerSystem; import reborncore.common.util.StringUtils; +import team.reborn.energy.EnergySide; +import team.reborn.energy.EnergyTier; import techreborn.blocks.transformers.BlockTransformer; import techreborn.config.TechRebornConfig; @@ -52,20 +53,20 @@ public class TransformerBlockEntity extends PowerAcceptorBlockEntity public String name; public Block wrenchDrop; - public EnumPowerTier inputTier; - public EnumPowerTier ouputTier; + public EnergyTier inputTier; + public EnergyTier ouputTier; public int maxInput; public int maxOutput; public int maxStorage; - public TransformerBlockEntity(BlockEntityType blockEntityType, String name, Block wrenchDrop, EnumPowerTier tier) { + public TransformerBlockEntity(BlockEntityType blockEntityType, String name, Block wrenchDrop, EnergyTier tier) { super(blockEntityType); this.wrenchDrop = wrenchDrop; this.inputTier = tier; - if (tier != EnumPowerTier.MICRO) { - ouputTier = EnumPowerTier.values()[tier.ordinal() - 1]; + if (tier != EnergyTier.MICRO) { + ouputTier = EnergyTier.values()[tier.ordinal() - 1]; } else { - ouputTier = EnumPowerTier.MICRO; + ouputTier = EnergyTier.MICRO; } this.name = name; this.maxInput = tier.getMaxInput(); @@ -109,7 +110,7 @@ public class TransformerBlockEntity extends PowerAcceptorBlockEntity } @Override - public EnumPowerTier getPushingTier() { + public EnergyTier getPushingTier() { return ouputTier; } @@ -137,9 +138,9 @@ public class TransformerBlockEntity extends PowerAcceptorBlockEntity // IListInfoProvider @Override public void addInfo(List info, boolean isReal, boolean hasData) { - info.add(new LiteralText(Formatting.GRAY + "Input Rate: " + Formatting.GOLD + PowerSystem.getLocaliszedPowerFormatted((int) getMaxInput()))); + info.add(new LiteralText(Formatting.GRAY + "Input Rate: " + Formatting.GOLD + PowerSystem.getLocaliszedPowerFormatted((int) getMaxInput(EnergySide.UNKNOWN)))); info.add(new LiteralText(Formatting.GRAY + "Input Tier: " + Formatting.GOLD + StringUtils.toFirstCapitalAllLowercase(inputTier.toString()))); - info.add(new LiteralText(Formatting.GRAY + "Output Rate: " + Formatting.GOLD + PowerSystem.getLocaliszedPowerFormatted((int) getMaxOutput()))); + info.add(new LiteralText(Formatting.GRAY + "Output Rate: " + Formatting.GOLD + PowerSystem.getLocaliszedPowerFormatted((int) getMaxOutput(EnergySide.UNKNOWN)))); info.add(new LiteralText(Formatting.GRAY + "Output Tier: " + Formatting.GOLD + StringUtils.toFirstCapitalAllLowercase(ouputTier.toString()))); } diff --git a/src/main/java/techreborn/blocks/cable/BlockCable.java b/src/main/java/techreborn/blocks/cable/BlockCable.java index cb2823a6e..93b086287 100644 --- a/src/main/java/techreborn/blocks/cable/BlockCable.java +++ b/src/main/java/techreborn/blocks/cable/BlockCable.java @@ -46,13 +46,13 @@ import net.minecraft.world.BlockView; import net.minecraft.world.IWorld; import net.minecraft.world.World; import reborncore.api.ToolManager; -import reborncore.api.power.EnergyBlockEntity; import reborncore.common.blocks.BlockWrenchEventHandler; import reborncore.common.util.WrenchUtils; +import team.reborn.energy.Energy; +import techreborn.blockentity.cable.CableBlockEntity; import techreborn.config.TechRebornConfig; import techreborn.init.ModSounds; import techreborn.init.TRContent; -import techreborn.blockentity.cable.CableBlockEntity; import techreborn.utils.damageSources.ElectrialShockSource; import javax.annotation.Nullable; @@ -112,7 +112,7 @@ public class BlockCable extends BlockWithEntity { private Boolean canConnectTo(IWorld world, BlockPos pos, Direction facing) { BlockEntity blockEntity = world.getBlockEntity(pos); - if (blockEntity != null && (blockEntity instanceof EnergyBlockEntity || blockEntity instanceof CableBlockEntity)) { + if (blockEntity != null && (Energy.valid(blockEntity) || blockEntity instanceof CableBlockEntity)) { return Boolean.TRUE; } return Boolean.FALSE; diff --git a/src/main/java/techreborn/events/StackToolTipHandler.java b/src/main/java/techreborn/events/StackToolTipHandler.java index 7af2e6b9b..445ab8254 100644 --- a/src/main/java/techreborn/events/StackToolTipHandler.java +++ b/src/main/java/techreborn/events/StackToolTipHandler.java @@ -40,10 +40,11 @@ import net.minecraft.text.Text; import net.minecraft.util.Formatting; import net.minecraft.util.registry.Registry; import reborncore.api.IListInfoProvider; -import reborncore.api.power.IEnergyItemInfo; import reborncore.api.power.ItemPowerManager; import reborncore.common.powerSystem.PowerSystem; import reborncore.common.util.StringUtils; +import team.reborn.energy.EnergyHolder; +import team.reborn.energy.EnergySide; import techreborn.TechReborn; import java.util.List; @@ -59,7 +60,7 @@ public class StackToolTipHandler implements ItemTooltipCallback { Item item = stack.getItem(); if (item instanceof IListInfoProvider) { ((IListInfoProvider) item).addInfo(components, false, false); - } else if (stack.getItem() instanceof IEnergyItemInfo) { + } else if (stack.getItem() instanceof EnergyHolder) { ItemPowerManager itemPowerManager = new ItemPowerManager(stack); LiteralText line1 = new LiteralText(PowerSystem.getLocaliszedPowerFormattedNoSuffix(itemPowerManager.getEnergyStored())); line1.append("/"); @@ -75,7 +76,7 @@ public class StackToolTipHandler implements ItemTooltipCallback { Formatting color = StringUtils.getPercentageColour(percentage); components.add(2, new LiteralText(color + "" + percentage + "%" + Formatting.GRAY + " Charged")); // TODO: show both input and output rates - components.add(3, new LiteralText(Formatting.GRAY + "I/O Rate: " + Formatting.GOLD + PowerSystem.getLocaliszedPowerFormatted(((IEnergyItemInfo) item).getMaxInput()))); + components.add(3, new LiteralText(Formatting.GRAY + "I/O Rate: " + Formatting.GOLD + PowerSystem.getLocaliszedPowerFormatted(((EnergyHolder) item).getMaxInput(EnergySide.UNKNOWN)))); } } else { try { @@ -105,4 +106,10 @@ public class StackToolTipHandler implements ItemTooltipCallback { return (int) ((CurrentValue * 100.0f) / MaxValue); } + public int percentage(double MaxValue, double CurrentValue) { + if (CurrentValue == 0) + return 0; + return (int) ((CurrentValue * 100.0f) / MaxValue); + } + } diff --git a/src/main/java/techreborn/init/TRContent.java b/src/main/java/techreborn/init/TRContent.java index af5044aba..1a0697a1a 100644 --- a/src/main/java/techreborn/init/TRContent.java +++ b/src/main/java/techreborn/init/TRContent.java @@ -32,8 +32,9 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemConvertible; import net.minecraft.item.ItemStack; import reborncore.api.blockentity.IUpgrade; -import reborncore.api.power.EnumPowerTier; import reborncore.common.powerSystem.PowerAcceptorBlockEntity; +import team.reborn.energy.EnergySide; +import team.reborn.energy.EnergyTier; import techreborn.TechReborn; import techreborn.blockentity.ChargeOMatBlockEntity; import techreborn.blockentity.DigitalChestBlockEntity; @@ -208,12 +209,12 @@ public class TRContent { public static Item PERIDOT_BOOTS; public enum SolarPanels implements ItemConvertible { - BASIC(EnumPowerTier.MICRO, TechRebornConfig.basicGenerationRateD, TechRebornConfig.basicGenerationRateN), - ADVANCED(EnumPowerTier.LOW, TechRebornConfig.advancedGenerationRateD, TechRebornConfig.advancedGenerationRateN), - INDUSTRIAL(EnumPowerTier.MEDIUM, TechRebornConfig.industrialGenerationRateD, TechRebornConfig.industrialGenerationRateN), - ULTIMATE(EnumPowerTier.HIGH, TechRebornConfig.ultimateGenerationRateD, TechRebornConfig.ultimateGenerationRateN), - QUANTUM(EnumPowerTier.EXTREME, TechRebornConfig.quantumGenerationRateD, TechRebornConfig.quantumGenerationRateN), - CREATIVE(EnumPowerTier.INFINITE, Integer.MAX_VALUE / 100, Integer.MAX_VALUE / 100); + BASIC(EnergyTier.MICRO, TechRebornConfig.basicGenerationRateD, TechRebornConfig.basicGenerationRateN), + ADVANCED(EnergyTier.LOW, TechRebornConfig.advancedGenerationRateD, TechRebornConfig.advancedGenerationRateN), + INDUSTRIAL(EnergyTier.MEDIUM, TechRebornConfig.industrialGenerationRateD, TechRebornConfig.industrialGenerationRateN), + ULTIMATE(EnergyTier.HIGH, TechRebornConfig.ultimateGenerationRateD, TechRebornConfig.ultimateGenerationRateN), + QUANTUM(EnergyTier.EXTREME, TechRebornConfig.quantumGenerationRateD, TechRebornConfig.quantumGenerationRateN), + CREATIVE(EnergyTier.INFINITE, Integer.MAX_VALUE / 100, Integer.MAX_VALUE / 100); public final String name; public final Block block; @@ -224,9 +225,9 @@ public class TRContent { public int generationRateN; // Internal EU storage of solar panel public int internalCapacity; - public final EnumPowerTier powerTier; + public final EnergyTier powerTier; - SolarPanels(EnumPowerTier tier, int generationRateD, int generationRateN) { + SolarPanels(EnergyTier tier, int generationRateD, int generationRateN) { name = this.toString().toLowerCase(Locale.ROOT); powerTier = tier; block = new BlockSolarPanel(this); @@ -245,15 +246,15 @@ public class TRContent { } public enum Cables implements ItemConvertible { - COPPER(128, 12.0, true, EnumPowerTier.MEDIUM), - TIN(32, 12.0, true, EnumPowerTier.LOW), - GOLD(512, 12.0, true, EnumPowerTier.HIGH), - HV(2048, 12.0, true, EnumPowerTier.EXTREME), - GLASSFIBER(8192, 12.0, false, EnumPowerTier.INSANE), - INSULATED_COPPER(128, 10.0, false, EnumPowerTier.MEDIUM), - INSULATED_GOLD(512, 10.0, false, EnumPowerTier.HIGH), - INSULATED_HV(2048, 10.0, false, EnumPowerTier.EXTREME), - SUPERCONDUCTOR(Integer.MAX_VALUE / 4, 10.0, false, EnumPowerTier.INFINITE); + COPPER(128, 12.0, true, EnergyTier.MEDIUM), + TIN(32, 12.0, true, EnergyTier.LOW), + GOLD(512, 12.0, true, EnergyTier.HIGH), + HV(2048, 12.0, true, EnergyTier.EXTREME), + GLASSFIBER(8192, 12.0, false, EnergyTier.INSANE), + INSULATED_COPPER(128, 10.0, false, EnergyTier.MEDIUM), + INSULATED_GOLD(512, 10.0, false, EnergyTier.HIGH), + INSULATED_HV(2048, 10.0, false, EnergyTier.EXTREME), + SUPERCONDUCTOR(Integer.MAX_VALUE / 4, 10.0, false, EnergyTier.INFINITE); public final String name; @@ -264,10 +265,10 @@ public class TRContent { public double cableThickness; public boolean canKill; public boolean defaultCanKill; - public EnumPowerTier tier; + public EnergyTier tier; - Cables(int transferRate, double cableThickness, boolean canKill, EnumPowerTier tier) { + Cables(int transferRate, double cableThickness, boolean canKill, EnergyTier tier) { name = this.toString().toLowerCase(Locale.ROOT); this.transferRate = transferRate; this.defaultTransferRate = transferRate; @@ -718,7 +719,7 @@ public class TRContent { handler.addSpeedMulti(TechRebornConfig.overclockerSpeed); handler.addPowerMulti(TechRebornConfig.overclockerPower); if (powerAcceptor != null) { - powerAcceptor.extraPowerInput += powerAcceptor.getMaxInput(); + powerAcceptor.extraPowerInput += powerAcceptor.getMaxInput(EnergySide.UNKNOWN); powerAcceptor.extraPowerStorage += powerAcceptor.getBaseMaxPower(); } }), diff --git a/src/main/java/techreborn/items/armor/ItemCloakingDevice.java b/src/main/java/techreborn/items/armor/ItemCloakingDevice.java index b58a53d1f..7310c634d 100644 --- a/src/main/java/techreborn/items/armor/ItemCloakingDevice.java +++ b/src/main/java/techreborn/items/armor/ItemCloakingDevice.java @@ -34,16 +34,18 @@ import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemStack; import net.minecraft.util.DefaultedList; import net.minecraft.world.World; -import reborncore.api.power.IEnergyItemInfo; import reborncore.api.power.ItemPowerManager; import reborncore.common.powerSystem.PowerSystem; import reborncore.common.util.ItemUtils; +import team.reborn.energy.EnergyHolder; +import team.reborn.energy.EnergySide; +import team.reborn.energy.EnergyTier; import techreborn.config.TechRebornConfig; import techreborn.init.TRArmorMaterial; import techreborn.init.TRContent; import techreborn.utils.InitUtils; -public class ItemCloakingDevice extends ItemTRArmour implements IEnergyItemInfo { +public class ItemCloakingDevice extends ItemTRArmour implements EnergyHolder { public static int maxCharge = TechRebornConfig.cloakingDeviceCharge; public static int usage = TechRebornConfig.cloackingDeviceUsage; @@ -102,17 +104,22 @@ public class ItemCloakingDevice extends ItemTRArmour implements IEnergyItemInfo // IEnergyItemInfo @Override - public int getCapacity() { + public double getMaxStoredPower() { return maxCharge; } @Override - public int getMaxInput() { + public EnergyTier getTier() { + return EnergyTier.HIGH; + } + + @Override + public double getMaxInput(EnergySide side) { return transferLimit; } @Override - public int getMaxOutput() { + public double getMaxOutput(EnergySide side) { return 0; } } diff --git a/src/main/java/techreborn/items/armor/ItemLapotronicOrbpack.java b/src/main/java/techreborn/items/armor/ItemLapotronicOrbpack.java index 1ce0b16ab..cf5470b5e 100644 --- a/src/main/java/techreborn/items/armor/ItemLapotronicOrbpack.java +++ b/src/main/java/techreborn/items/armor/ItemLapotronicOrbpack.java @@ -27,20 +27,24 @@ package techreborn.items.armor; import net.minecraft.entity.Entity; import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.*; +import net.minecraft.item.ArmorItem; +import net.minecraft.item.Item; +import net.minecraft.item.ItemGroup; +import net.minecraft.item.ItemStack; import net.minecraft.util.DefaultedList; import net.minecraft.world.World; -import reborncore.api.power.IEnergyItemInfo; import reborncore.common.powerSystem.PowerSystem; import reborncore.common.util.ItemDurabilityExtensions; import reborncore.common.util.ItemUtils; +import team.reborn.energy.EnergyHolder; +import team.reborn.energy.EnergyTier; import techreborn.TechReborn; import techreborn.config.TechRebornConfig; import techreborn.init.TRArmorMaterial; import techreborn.init.TRContent; import techreborn.utils.InitUtils; -public class ItemLapotronicOrbpack extends ArmorItem implements IEnergyItemInfo, ItemDurabilityExtensions { +public class ItemLapotronicOrbpack extends ArmorItem implements EnergyHolder, ItemDurabilityExtensions { // 400M FE maxCharge and 100k FE\t charge rate. Fully charged in 3 mins. public static final int maxCharge = TechRebornConfig.lapotronPackCharge; @@ -62,8 +66,7 @@ public class ItemLapotronicOrbpack extends ArmorItem implements IEnergyItemInfo, @Override public void inventoryTick(ItemStack stack, World worldIn, Entity entityIn, int itemSlot, boolean isSelected) { if (entityIn instanceof PlayerEntity) { - ItemLithiumIonBatpack.distributePowerToInventory(worldIn, (PlayerEntity) entityIn, stack, - (int) transferLimit); + ItemLithiumIonBatpack.distributePowerToInventory(worldIn, (PlayerEntity) entityIn, stack, transferLimit); } } @@ -84,17 +87,12 @@ public class ItemLapotronicOrbpack extends ArmorItem implements IEnergyItemInfo, // IEnergyItemInfo @Override - public int getCapacity() { + public double getMaxStoredPower() { return maxCharge; } @Override - public int getMaxInput() { - return transferLimit; - } - - @Override - public int getMaxOutput() { - return transferLimit; + public EnergyTier getTier() { + return EnergyTier.EXTREME; } } diff --git a/src/main/java/techreborn/items/armor/ItemLithiumIonBatpack.java b/src/main/java/techreborn/items/armor/ItemLithiumIonBatpack.java index c954ac569..8554098e3 100644 --- a/src/main/java/techreborn/items/armor/ItemLithiumIonBatpack.java +++ b/src/main/java/techreborn/items/armor/ItemLithiumIonBatpack.java @@ -29,22 +29,26 @@ import net.fabricmc.api.Environment; import net.minecraft.entity.Entity; import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.*; +import net.minecraft.item.ArmorItem; +import net.minecraft.item.Item; +import net.minecraft.item.ItemGroup; +import net.minecraft.item.ItemStack; import net.minecraft.util.DefaultedList; import net.minecraft.world.World; -import reborncore.api.power.IEnergyItemInfo; import reborncore.api.power.ItemPowerManager; import reborncore.common.powerSystem.ExternalPowerSystems; import reborncore.common.powerSystem.PowerSystem; import reborncore.common.util.ItemDurabilityExtensions; import reborncore.common.util.ItemUtils; +import team.reborn.energy.EnergyHolder; +import team.reborn.energy.EnergyTier; import techreborn.TechReborn; import techreborn.config.TechRebornConfig; import techreborn.init.TRArmorMaterial; import techreborn.init.TRContent; import techreborn.utils.InitUtils; -public class ItemLithiumIonBatpack extends ArmorItem implements IEnergyItemInfo, ItemDurabilityExtensions { +public class ItemLithiumIonBatpack extends ArmorItem implements EnergyHolder, ItemDurabilityExtensions { // 8M FE maxCharge and 2k FE\t charge rate. Fully charged in 3 mins. public static final int maxCharge = TechRebornConfig.lithiumBatpackCharge; @@ -102,17 +106,13 @@ public class ItemLithiumIonBatpack extends ArmorItem implements IEnergyItemInfo, // IEnergyItemInfo @Override - public int getCapacity() { + public double getMaxStoredPower() { return maxCharge; } @Override - public int getMaxInput() { - return transferLimit; + public EnergyTier getTier() { + return EnergyTier.HIGH; } - @Override - public int getMaxOutput() { - return transferLimit; - } } diff --git a/src/main/java/techreborn/items/battery/ItemBattery.java b/src/main/java/techreborn/items/battery/ItemBattery.java index 5d14c1223..5d1556680 100644 --- a/src/main/java/techreborn/items/battery/ItemBattery.java +++ b/src/main/java/techreborn/items/battery/ItemBattery.java @@ -32,24 +32,25 @@ import net.minecraft.item.ItemPropertyGetter; import net.minecraft.item.ItemStack; import net.minecraft.util.Identifier; import net.minecraft.world.World; -import reborncore.api.power.IEnergyItemInfo; import reborncore.api.power.ItemPowerManager; import reborncore.common.powerSystem.PowerSystem; import reborncore.common.util.ItemDurabilityExtensions; import reborncore.common.util.ItemUtils; +import team.reborn.energy.EnergyHolder; +import team.reborn.energy.EnergyTier; import techreborn.TechReborn; import javax.annotation.Nullable; -public class ItemBattery extends Item implements IEnergyItemInfo, ItemDurabilityExtensions { +public class ItemBattery extends Item implements EnergyHolder, ItemDurabilityExtensions { - int maxEnergy = 0; - int maxTransfer = 0; + private final int maxEnergy; + private final EnergyTier tier; - public ItemBattery(int maxEnergy, int maxTransfer) { + public ItemBattery(int maxEnergy, EnergyTier tier) { super(new Item.Settings().group(TechReborn.ITEMGROUP).maxCount(1).maxDamageIfAbsent(1)); this.maxEnergy = maxEnergy; - this.maxTransfer = maxTransfer; + this.tier = tier; this.addPropertyGetter(new Identifier("techreborn:empty"), new ItemPropertyGetter() { @Override @Environment(EnvType.CLIENT) @@ -80,17 +81,12 @@ public class ItemBattery extends Item implements IEnergyItemInfo, ItemDurability // IEnergyItemInfo @Override - public int getCapacity() { + public double getMaxStoredPower() { return maxEnergy; } @Override - public int getMaxInput() { - return maxTransfer; - } - - @Override - public int getMaxOutput() { - return maxTransfer; + public EnergyTier getTier() { + return tier; } } diff --git a/src/main/java/techreborn/items/battery/ItemEnergyCrystal.java b/src/main/java/techreborn/items/battery/ItemEnergyCrystal.java index c51b52b41..1b35417dd 100644 --- a/src/main/java/techreborn/items/battery/ItemEnergyCrystal.java +++ b/src/main/java/techreborn/items/battery/ItemEnergyCrystal.java @@ -29,6 +29,7 @@ import net.fabricmc.api.Environment; import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemStack; import net.minecraft.util.DefaultedList; +import team.reborn.energy.EnergyTier; import techreborn.config.TechRebornConfig; import techreborn.init.TRContent; import techreborn.utils.InitUtils; @@ -37,7 +38,7 @@ public class ItemEnergyCrystal extends ItemBattery { // 4M FE storage with 1k charge rate public ItemEnergyCrystal() { - super(TechRebornConfig.energyCrystalMaxCharge, 1_000); + super(TechRebornConfig.energyCrystalMaxCharge, EnergyTier.HIGH); } @Environment(EnvType.CLIENT) diff --git a/src/main/java/techreborn/items/battery/ItemLapotronCrystal.java b/src/main/java/techreborn/items/battery/ItemLapotronCrystal.java index e5a875596..62b196d0f 100644 --- a/src/main/java/techreborn/items/battery/ItemLapotronCrystal.java +++ b/src/main/java/techreborn/items/battery/ItemLapotronCrystal.java @@ -29,6 +29,7 @@ import net.fabricmc.api.Environment; import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemStack; import net.minecraft.util.DefaultedList; +import team.reborn.energy.EnergyTier; import techreborn.config.TechRebornConfig; import techreborn.init.TRContent; import techreborn.utils.InitUtils; @@ -37,7 +38,7 @@ public class ItemLapotronCrystal extends ItemBattery { // 40M FE capacity with 10k FE\t charge rate public ItemLapotronCrystal() { - super(TechRebornConfig.lapotronCrystalMaxCharge, 10_000); + super(TechRebornConfig.lapotronCrystalMaxCharge, EnergyTier.EXTREME); } @Environment(EnvType.CLIENT) diff --git a/src/main/java/techreborn/items/battery/ItemLapotronicOrb.java b/src/main/java/techreborn/items/battery/ItemLapotronicOrb.java index 07209083c..267e6042e 100644 --- a/src/main/java/techreborn/items/battery/ItemLapotronicOrb.java +++ b/src/main/java/techreborn/items/battery/ItemLapotronicOrb.java @@ -29,6 +29,7 @@ import net.fabricmc.api.Environment; import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemStack; import net.minecraft.util.DefaultedList; +import team.reborn.energy.EnergyTier; import techreborn.config.TechRebornConfig; import techreborn.init.TRContent; import techreborn.utils.InitUtils; @@ -37,7 +38,7 @@ public class ItemLapotronicOrb extends ItemBattery { // 400M capacity with 100k FE\t charge rate public ItemLapotronicOrb() { - super(TechRebornConfig.lapotronicOrbMaxCharge, 100_000); + super(TechRebornConfig.lapotronicOrbMaxCharge, EnergyTier.EXTREME); } @Environment(EnvType.CLIENT) diff --git a/src/main/java/techreborn/items/battery/ItemLithiumIonBattery.java b/src/main/java/techreborn/items/battery/ItemLithiumIonBattery.java index 86ffd27cc..e4bffa26b 100644 --- a/src/main/java/techreborn/items/battery/ItemLithiumIonBattery.java +++ b/src/main/java/techreborn/items/battery/ItemLithiumIonBattery.java @@ -29,6 +29,7 @@ import net.fabricmc.api.Environment; import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemStack; import net.minecraft.util.DefaultedList; +import team.reborn.energy.EnergyTier; import techreborn.init.TRContent; import techreborn.utils.InitUtils; @@ -36,7 +37,7 @@ public class ItemLithiumIonBattery extends ItemBattery { // 400k FE with 1k FE\t charge rate public ItemLithiumIonBattery() { - super(400_000, 1_000); + super(400_000, EnergyTier.HIGH); } @Environment(EnvType.CLIENT) diff --git a/src/main/java/techreborn/items/battery/ItemRedCellBattery.java b/src/main/java/techreborn/items/battery/ItemRedCellBattery.java index 9c40f8d32..bb8a02e1b 100644 --- a/src/main/java/techreborn/items/battery/ItemRedCellBattery.java +++ b/src/main/java/techreborn/items/battery/ItemRedCellBattery.java @@ -29,6 +29,7 @@ import net.fabricmc.api.Environment; import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemStack; import net.minecraft.util.DefaultedList; +import team.reborn.energy.EnergyTier; import techreborn.init.TRContent; import techreborn.utils.InitUtils; @@ -36,7 +37,7 @@ public class ItemRedCellBattery extends ItemBattery { // 40k FE capacity with 100 FE\t charge rate public ItemRedCellBattery() { - super(40_000, 100); + super(40_000, EnergyTier.LOW); } @Environment(EnvType.CLIENT) diff --git a/src/main/java/techreborn/items/tool/ItemChainsaw.java b/src/main/java/techreborn/items/tool/ItemChainsaw.java index f521f0b8b..2b317b180 100644 --- a/src/main/java/techreborn/items/tool/ItemChainsaw.java +++ b/src/main/java/techreborn/items/tool/ItemChainsaw.java @@ -35,18 +35,20 @@ import net.minecraft.item.*; import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; -import reborncore.api.power.IEnergyItemInfo; import reborncore.api.power.ItemPowerManager; import reborncore.common.powerSystem.ExternalPowerSystems; import reborncore.common.powerSystem.PowerSystem; import reborncore.common.util.ItemDurabilityExtensions; import reborncore.common.util.ItemUtils; +import team.reborn.energy.EnergyHolder; +import team.reborn.energy.EnergySide; +import team.reborn.energy.EnergyTier; import techreborn.TechReborn; import javax.annotation.Nullable; import java.util.Random; -public class ItemChainsaw extends AxeItem implements IEnergyItemInfo, ItemDurabilityExtensions { +public class ItemChainsaw extends AxeItem implements EnergyHolder, ItemDurabilityExtensions { public int maxCharge = 1; public int cost = 250; @@ -123,17 +125,22 @@ public class ItemChainsaw extends AxeItem implements IEnergyItemInfo, ItemDurabi // IEnergyItemInfo @Override - public int getCapacity() { + public double getMaxStoredPower() { return maxCharge; } @Override - public int getMaxInput() { + public EnergyTier getTier() { + return EnergyTier.MEDIUM; + } + + @Override + public double getMaxInput(EnergySide side) { return transferLimit; } @Override - public int getMaxOutput() { + public double getMaxOutput(EnergySide side) { return 0; } diff --git a/src/main/java/techreborn/items/tool/ItemDebugTool.java b/src/main/java/techreborn/items/tool/ItemDebugTool.java index d5feb5d3e..fe845bb5b 100644 --- a/src/main/java/techreborn/items/tool/ItemDebugTool.java +++ b/src/main/java/techreborn/items/tool/ItemDebugTool.java @@ -36,8 +36,8 @@ import net.minecraft.util.ActionResult; import net.minecraft.util.Formatting; import net.minecraft.util.SystemUtil; import net.minecraft.util.registry.Registry; -import reborncore.api.power.EnergyBlockEntity; import reborncore.common.powerSystem.PowerSystem; +import team.reborn.energy.Energy; import techreborn.TechReborn; import java.util.Map.Entry; @@ -65,8 +65,8 @@ public class ItemDebugTool extends Item { BlockEntity blockEntity = context.getWorld().getBlockEntity(context.getBlockPos()); if (blockEntity != null) { sendMessage(context, new LiteralText(getBlockEntityType(blockEntity))); - if (blockEntity instanceof EnergyBlockEntity) { - sendMessage(context, new LiteralText(getRCPower((EnergyBlockEntity) blockEntity))); + if (Energy.valid(blockEntity)) { + sendMessage(context, new LiteralText(getRCPower(blockEntity))); } } return ActionResult.SUCCESS; @@ -109,13 +109,13 @@ public class ItemDebugTool extends Item { return s; } - private String getRCPower(EnergyBlockEntity blockEntity) { + private String getRCPower(BlockEntity blockEntity) { String s = "" + Formatting.GREEN; s += "Power: "; s += Formatting.BLUE; - s += PowerSystem.getLocaliszedPower(blockEntity.getEnergy()); + s += PowerSystem.getLocaliszedPower(Energy.of(blockEntity).getEnergy()); s += "/"; - s += PowerSystem.getLocaliszedPower(blockEntity.getMaxPower()); + s += PowerSystem.getLocaliszedPower(Energy.of(blockEntity).getMaxStored()); return s; } diff --git a/src/main/java/techreborn/items/tool/ItemDrill.java b/src/main/java/techreborn/items/tool/ItemDrill.java index 459901316..199e814ad 100644 --- a/src/main/java/techreborn/items/tool/ItemDrill.java +++ b/src/main/java/techreborn/items/tool/ItemDrill.java @@ -31,17 +31,19 @@ import net.minecraft.entity.LivingEntity; import net.minecraft.item.*; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; -import reborncore.api.power.IEnergyItemInfo; import reborncore.api.power.ItemPowerManager; import reborncore.common.powerSystem.ExternalPowerSystems; import reborncore.common.powerSystem.PowerSystem; import reborncore.common.util.ItemDurabilityExtensions; import reborncore.common.util.ItemUtils; +import team.reborn.energy.EnergyHolder; +import team.reborn.energy.EnergySide; +import team.reborn.energy.EnergyTier; import techreborn.TechReborn; import java.util.Random; -public class ItemDrill extends PickaxeItem implements IEnergyItemInfo, ItemDurabilityExtensions { +public class ItemDrill extends PickaxeItem implements EnergyHolder, ItemDurabilityExtensions { public int maxCharge = 1; public int cost = 250; @@ -109,17 +111,22 @@ public class ItemDrill extends PickaxeItem implements IEnergyItemInfo, ItemDurab // IEnergyItemInfo @Override - public int getCapacity() { + public double getMaxStoredPower() { return maxCharge; } @Override - public int getMaxInput() { + public EnergyTier getTier() { + return EnergyTier.HIGH; + } + + @Override + public double getMaxInput(EnergySide side) { return transferLimit; } @Override - public int getMaxOutput() { + public double getMaxOutput(EnergySide side) { return 0; } } diff --git a/src/main/java/techreborn/items/tool/ItemJackhammer.java b/src/main/java/techreborn/items/tool/ItemJackhammer.java index ace9d5c26..5e3a589c6 100644 --- a/src/main/java/techreborn/items/tool/ItemJackhammer.java +++ b/src/main/java/techreborn/items/tool/ItemJackhammer.java @@ -35,16 +35,19 @@ import net.minecraft.item.PickaxeItem; import net.minecraft.item.ToolMaterials; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; -import reborncore.api.power.IEnergyItemInfo; import reborncore.api.power.ItemPowerManager; import reborncore.common.powerSystem.ExternalPowerSystems; import reborncore.common.powerSystem.PowerSystem; import reborncore.common.util.ItemDurabilityExtensions; import reborncore.common.util.ItemUtils; +import team.reborn.energy.EnergyHolder; +import team.reborn.energy.EnergySide; +import team.reborn.energy.EnergyTier; import techreborn.TechReborn; + import java.util.Random; -public class ItemJackhammer extends PickaxeItem implements IEnergyItemInfo, ItemDurabilityExtensions { +public class ItemJackhammer extends PickaxeItem implements EnergyHolder, ItemDurabilityExtensions { public int maxCharge = 1; public int cost = 250; @@ -107,17 +110,22 @@ public class ItemJackhammer extends PickaxeItem implements IEnergyItemInfo, Item // IEnergyItemInfo @Override - public int getCapacity() { + public double getMaxStoredPower() { return maxCharge; } @Override - public int getMaxInput() { + public EnergyTier getTier() { + return EnergyTier.MEDIUM; + } + + @Override + public double getMaxInput(EnergySide side) { return transferLimit; } @Override - public int getMaxOutput() { + public double getMaxOutput(EnergySide side) { return 0; } } diff --git a/src/main/java/techreborn/items/tool/advanced/ItemRockCutter.java b/src/main/java/techreborn/items/tool/advanced/ItemRockCutter.java index 071b7475f..f0a35724d 100644 --- a/src/main/java/techreborn/items/tool/advanced/ItemRockCutter.java +++ b/src/main/java/techreborn/items/tool/advanced/ItemRockCutter.java @@ -35,19 +35,21 @@ import net.minecraft.item.*; import net.minecraft.util.DefaultedList; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; -import reborncore.api.power.IEnergyItemInfo; import reborncore.api.power.ItemPowerManager; import reborncore.common.powerSystem.ExternalPowerSystems; import reborncore.common.powerSystem.PowerSystem; import reborncore.common.util.ItemDurabilityExtensions; import reborncore.common.util.ItemUtils; +import team.reborn.energy.EnergyHolder; +import team.reborn.energy.EnergySide; +import team.reborn.energy.EnergyTier; import techreborn.TechReborn; import techreborn.config.TechRebornConfig; import techreborn.init.TRContent; import java.util.Random; -public class ItemRockCutter extends PickaxeItem implements IEnergyItemInfo, ItemDurabilityExtensions { +public class ItemRockCutter extends PickaxeItem implements EnergyHolder, ItemDurabilityExtensions { public static final int maxCharge = TechRebornConfig.rockCutterCharge; public int transferLimit = 1_000; @@ -144,17 +146,22 @@ public class ItemRockCutter extends PickaxeItem implements IEnergyItemInfo, Item // IEnergyItemInfo @Override - public int getCapacity() { + public double getMaxStoredPower() { return maxCharge; } @Override - public int getMaxInput() { + public EnergyTier getTier() { + return EnergyTier.HIGH; + } + + @Override + public double getMaxInput(EnergySide side) { return transferLimit; } @Override - public int getMaxOutput() { + public double getMaxOutput(EnergySide side) { return 0; } } diff --git a/src/main/java/techreborn/items/tool/basic/ItemElectricTreetap.java b/src/main/java/techreborn/items/tool/basic/ItemElectricTreetap.java index 370fd02cf..7a6b82fd0 100644 --- a/src/main/java/techreborn/items/tool/basic/ItemElectricTreetap.java +++ b/src/main/java/techreborn/items/tool/basic/ItemElectricTreetap.java @@ -30,19 +30,19 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemStack; import net.minecraft.util.DefaultedList; -import reborncore.api.power.IEnergyItemInfo; import reborncore.common.powerSystem.PowerSystem; import reborncore.common.util.ItemDurabilityExtensions; import reborncore.common.util.ItemUtils; +import team.reborn.energy.EnergyHolder; +import team.reborn.energy.EnergyTier; import techreborn.TechReborn; - import techreborn.init.TRContent; import techreborn.utils.InitUtils; /** * Created by modmuss50 on 05/11/2016. */ -public class ItemElectricTreetap extends Item implements IEnergyItemInfo, ItemDurabilityExtensions { +public class ItemElectricTreetap extends Item implements EnergyHolder, ItemDurabilityExtensions { public static final int maxCharge = 10_000; public int cost = 20; @@ -77,17 +77,12 @@ public class ItemElectricTreetap extends Item implements IEnergyItemInfo, ItemDu // IEnergyItemInfo @Override - public int getCapacity() { + public double getMaxStoredPower() { return maxCharge; } @Override - public int getMaxInput() { - return 200; - } - - @Override - public int getMaxOutput() { - return 0; + public EnergyTier getTier() { + return EnergyTier.MEDIUM; } } diff --git a/src/main/java/techreborn/items/tool/industrial/ItemNanosaber.java b/src/main/java/techreborn/items/tool/industrial/ItemNanosaber.java index 694788e0e..ca5254829 100644 --- a/src/main/java/techreborn/items/tool/industrial/ItemNanosaber.java +++ b/src/main/java/techreborn/items/tool/industrial/ItemNanosaber.java @@ -28,13 +28,11 @@ import com.google.common.collect.Multimap; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.item.TooltipContext; +import net.minecraft.entity.Entity; import net.minecraft.entity.EquipmentSlot; +import net.minecraft.entity.LivingEntity; import net.minecraft.entity.attribute.EntityAttributeModifier; import net.minecraft.entity.attribute.EntityAttributes; -import reborncore.api.items.ItemStackModifiers; -import reborncore.common.util.StringUtils; -import net.minecraft.entity.Entity; -import net.minecraft.entity.LivingEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.*; import net.minecraft.nbt.CompoundTag; @@ -43,13 +41,17 @@ import net.minecraft.text.Text; import net.minecraft.text.TranslatableText; import net.minecraft.util.*; import net.minecraft.world.World; -import reborncore.api.power.IEnergyItemInfo; +import reborncore.api.items.ItemStackModifiers; import reborncore.api.power.ItemPowerManager; import reborncore.common.powerSystem.ExternalPowerSystems; import reborncore.common.powerSystem.PowerSystem; import reborncore.common.util.ChatUtils; import reborncore.common.util.ItemDurabilityExtensions; import reborncore.common.util.ItemUtils; +import reborncore.common.util.StringUtils; +import team.reborn.energy.EnergyHolder; +import team.reborn.energy.EnergySide; +import team.reborn.energy.EnergyTier; import techreborn.TechReborn; import techreborn.config.TechRebornConfig; import techreborn.init.TRContent; @@ -58,7 +60,7 @@ import techreborn.utils.MessageIDs; import javax.annotation.Nullable; import java.util.List; -public class ItemNanosaber extends SwordItem implements IEnergyItemInfo, ItemDurabilityExtensions, ItemStackModifiers { +public class ItemNanosaber extends SwordItem implements EnergyHolder, ItemDurabilityExtensions, ItemStackModifiers { public static final int maxCharge = TechRebornConfig.nanoSaberCharge; public int transferLimit = 1_000; public int cost = 250; @@ -215,17 +217,22 @@ public class ItemNanosaber extends SwordItem implements IEnergyItemInfo, ItemDur // IEnergyItemInfo @Override - public int getCapacity() { + public double getMaxStoredPower() { return maxCharge; } @Override - public int getMaxInput() { + public EnergyTier getTier() { + return EnergyTier.HIGH; + } + + @Override + public double getMaxInput(EnergySide side) { return transferLimit; } @Override - public int getMaxOutput() { + public double getMaxOutput(EnergySide side) { return 0; } } diff --git a/src/main/java/techreborn/items/tool/industrial/ItemOmniTool.java b/src/main/java/techreborn/items/tool/industrial/ItemOmniTool.java index 63cc32038..40dd81cb1 100644 --- a/src/main/java/techreborn/items/tool/industrial/ItemOmniTool.java +++ b/src/main/java/techreborn/items/tool/industrial/ItemOmniTool.java @@ -26,26 +26,28 @@ package techreborn.items.tool.industrial; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.minecraft.text.LiteralText; -import net.minecraft.text.Text; -import net.minecraft.util.Formatting; import net.minecraft.block.BlockState; import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.damage.DamageSource; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.*; +import net.minecraft.text.LiteralText; +import net.minecraft.text.Text; import net.minecraft.util.ActionResult; import net.minecraft.util.DefaultedList; +import net.minecraft.util.Formatting; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; -import reborncore.api.power.IEnergyItemInfo; import reborncore.api.power.ItemPowerManager; import reborncore.common.powerSystem.ExternalPowerSystems; import reborncore.common.powerSystem.PowerSystem; import reborncore.common.util.ItemDurabilityExtensions; import reborncore.common.util.ItemUtils; import reborncore.common.util.TorchHelper; +import team.reborn.energy.EnergyHolder; +import team.reborn.energy.EnergySide; +import team.reborn.energy.EnergyTier; import techreborn.TechReborn; import techreborn.config.TechRebornConfig; import techreborn.init.TRContent; @@ -54,7 +56,7 @@ import techreborn.utils.InitUtils; import javax.annotation.Nullable; import java.util.List; -public class ItemOmniTool extends PickaxeItem implements IEnergyItemInfo, ItemDurabilityExtensions { +public class ItemOmniTool extends PickaxeItem implements EnergyHolder, ItemDurabilityExtensions { public static final int maxCharge = TechRebornConfig.omniToolCharge; public int transferLimit = 1_000; @@ -163,17 +165,22 @@ public class ItemOmniTool extends PickaxeItem implements IEnergyItemInfo, ItemDu // IEnergyItemInfo @Override - public int getCapacity() { + public double getMaxStoredPower() { return maxCharge; } @Override - public int getMaxInput() { + public double getMaxInput(EnergySide side) { return transferLimit; } @Override - public int getMaxOutput() { + public double getMaxOutput(EnergySide side) { return 0; } + + @Override + public EnergyTier getTier() { + return EnergyTier.HIGH; + } } From aa6eb60d469984e9e1cfc7cbd59c2cbbfeb2c566 Mon Sep 17 00:00:00 2001 From: modmuss50 Date: Sun, 15 Sep 2019 19:14:42 +0100 Subject: [PATCH 2/2] Finish porting to new power api --- build.gradle | 2 +- src/main/java/techreborn/TechReborn.java | 3 +- .../blockentity/cable/CableBlockEntity.java | 8 ++--- .../generator/SolarPanelBlockEntity.java | 22 ++++++++---- .../storage/EnergyStorageBlockEntity.java | 3 ++ .../blocks/misc/BlockRubberLog.java | 28 ++++----------- .../events/StackToolTipHandler.java | 9 +++-- .../items/armor/ItemCloakingDevice.java | 24 +++++-------- .../items/armor/ItemLithiumIonBatpack.java | 5 +-- .../techreborn/items/battery/ItemBattery.java | 4 +-- .../techreborn/items/tool/ItemChainsaw.java | 12 +++---- .../java/techreborn/items/tool/ItemDrill.java | 10 +++--- .../techreborn/items/tool/ItemJackhammer.java | 10 +++--- .../items/tool/advanced/ItemRockCutter.java | 13 +++---- .../industrial/ItemIndustrialChainsaw.java | 35 +++++++++---------- .../tool/industrial/ItemIndustrialDrill.java | 15 ++++---- .../items/tool/industrial/ItemNanosaber.java | 26 +++++--------- .../items/tool/industrial/ItemOmniTool.java | 18 +++------- src/main/java/techreborn/utils/InitUtils.java | 6 ++-- 19 files changed, 103 insertions(+), 150 deletions(-) diff --git a/build.gradle b/build.gradle index 6e37b03b1..02b373b80 100644 --- a/build.gradle +++ b/build.gradle @@ -100,7 +100,7 @@ dependencies { transitive = false } - compile 'teamreborn:energy:0.0.5' + compile 'teamreborn:energy:0.0.6' } processResources { diff --git a/src/main/java/techreborn/TechReborn.java b/src/main/java/techreborn/TechReborn.java index feace7bde..d3e78ec2b 100644 --- a/src/main/java/techreborn/TechReborn.java +++ b/src/main/java/techreborn/TechReborn.java @@ -32,6 +32,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.Identifier; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import reborncore.api.power.ItemPowerHolder; import reborncore.common.config.Configuration; import reborncore.common.recipes.RecipeCrafter; import reborncore.common.util.Torus; @@ -44,7 +45,6 @@ import techreborn.init.*; import techreborn.packets.ClientboundPackets; import techreborn.packets.ServerboundPackets; import techreborn.utils.BehaviorDispenseScrapbox; -import reborncore.common.chunkloading.ChunkLoaderManager; import techreborn.world.WorldGenerator; public class TechReborn implements ModInitializer { @@ -62,6 +62,7 @@ public class TechReborn implements ModInitializer { INSTANCE = this; new Configuration(TechRebornConfig.class, "techreborn"); + ItemPowerHolder.setup(); // Done to force the class to load ModRecipes.GRINDER.getName(); diff --git a/src/main/java/techreborn/blockentity/cable/CableBlockEntity.java b/src/main/java/techreborn/blockentity/cable/CableBlockEntity.java index 02fde65ba..3411d8b28 100644 --- a/src/main/java/techreborn/blockentity/cable/CableBlockEntity.java +++ b/src/main/java/techreborn/blockentity/cable/CableBlockEntity.java @@ -148,11 +148,9 @@ public class CableBlockEntity extends BlockEntity return; } Collections.shuffle(acceptors); - acceptors.forEach(blockEntity -> { - Energy.of(this) - .into(Energy.of(blockEntity)) - .move(); - }); + acceptors.forEach(blockEntity -> Energy.of(this) + .into(Energy.of(blockEntity)) + .move()); } // IListInfoProvider diff --git a/src/main/java/techreborn/blockentity/generator/SolarPanelBlockEntity.java b/src/main/java/techreborn/blockentity/generator/SolarPanelBlockEntity.java index fb8aafecd..663ea25d7 100644 --- a/src/main/java/techreborn/blockentity/generator/SolarPanelBlockEntity.java +++ b/src/main/java/techreborn/blockentity/generator/SolarPanelBlockEntity.java @@ -37,6 +37,7 @@ import reborncore.common.blocks.BlockMachineBase; import reborncore.common.powerSystem.PowerAcceptorBlockEntity; import reborncore.common.powerSystem.PowerSystem; import reborncore.common.util.StringUtils; +import team.reborn.energy.Energy; import team.reborn.energy.EnergyTier; import techreborn.blocks.generator.BlockSolarPanel; import techreborn.init.TRBlockEntities; @@ -49,7 +50,7 @@ public class SolarPanelBlockEntity extends PowerAcceptorBlockEntity implements I boolean canSeeSky = false; boolean lastState = false; - SolarPanels panel; + private SolarPanels panel; public SolarPanelBlockEntity() { super(TRBlockEntities.SOLAR_PANEL); @@ -77,7 +78,7 @@ public class SolarPanelBlockEntity extends PowerAcceptorBlockEntity implements I if (world.isClient) { return; } - if (panel == TRContent.SolarPanels.CREATIVE) { + if (getPanel() == TRContent.SolarPanels.CREATIVE) { checkOverfill = false; setEnergy(Integer.MAX_VALUE); return; @@ -91,9 +92,9 @@ public class SolarPanelBlockEntity extends PowerAcceptorBlockEntity implements I } int powerToAdd; if (isSunOut()) { - powerToAdd = panel.generationRateD; + powerToAdd = getPanel().generationRateD; } else if (canSeeSky) { - powerToAdd = panel.generationRateN; + powerToAdd = getPanel().generationRateN; } else { powerToAdd = 0; } @@ -103,7 +104,7 @@ public class SolarPanelBlockEntity extends PowerAcceptorBlockEntity implements I @Override public double getBaseMaxPower() { - return panel.internalCapacity; + return getPanel().internalCapacity; } @Override @@ -118,7 +119,7 @@ public class SolarPanelBlockEntity extends PowerAcceptorBlockEntity implements I @Override public double getBaseMaxOutput() { - return panel.generationRateD; + return getPanel().generationRateD; } @Override @@ -128,7 +129,7 @@ public class SolarPanelBlockEntity extends PowerAcceptorBlockEntity implements I @Override public EnergyTier getTier() { - return panel.powerTier; + return getPanel().powerTier; } @Override @@ -136,6 +137,13 @@ public class SolarPanelBlockEntity extends PowerAcceptorBlockEntity implements I // Nope } + public SolarPanels getPanel() { + if(panel == null){ + updatePanel(); + } + return panel; + } + @Override public void addInfo(List info, boolean isReal, boolean hasData) { info.add(new LiteralText(Formatting.GRAY + StringUtils.t("reborncore.tooltip.energy.maxEnergy") + ": " diff --git a/src/main/java/techreborn/blockentity/storage/EnergyStorageBlockEntity.java b/src/main/java/techreborn/blockentity/storage/EnergyStorageBlockEntity.java index b59a7655e..39bd9ffce 100644 --- a/src/main/java/techreborn/blockentity/storage/EnergyStorageBlockEntity.java +++ b/src/main/java/techreborn/blockentity/storage/EnergyStorageBlockEntity.java @@ -114,6 +114,9 @@ public class EnergyStorageBlockEntity extends PowerAcceptorBlockEntity @Override public Direction getFacingEnum() { + if(world == null){ + return null; + } Block block = world.getBlockState(pos).getBlock(); if (block instanceof BlockEnergyStorage) { return ((BlockEnergyStorage) block).getFacing(world.getBlockState(pos)); diff --git a/src/main/java/techreborn/blocks/misc/BlockRubberLog.java b/src/main/java/techreborn/blocks/misc/BlockRubberLog.java index 9a316e4c0..f886a4796 100644 --- a/src/main/java/techreborn/blocks/misc/BlockRubberLog.java +++ b/src/main/java/techreborn/blocks/misc/BlockRubberLog.java @@ -42,9 +42,9 @@ import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.world.World; -import reborncore.api.power.ItemPowerManager; import reborncore.common.powerSystem.ExternalPowerSystems; import reborncore.common.util.WorldUtils; +import team.reborn.energy.Energy; import techreborn.events.TRRecipeHandler; import techreborn.init.ModSounds; import techreborn.init.TRContent; @@ -120,22 +120,16 @@ public class BlockRubberLog extends LogBlock { if (stack.isEmpty()) { return false; } - - //TODO: Should it be here?? - ItemPowerManager capEnergy = null; - if (stack.getItem() instanceof ItemElectricTreetap) { - capEnergy = new ItemPowerManager(stack); - } - if ((capEnergy != null && capEnergy.getEnergyStored() > 20) || stack.getItem() instanceof ItemTreeTap) { + + if ((Energy.valid(stack) && Energy.of(stack).getEnergy() > 20) || stack.getItem() instanceof ItemTreeTap) { if (state.get(HAS_SAP) && state.get(SAP_SIDE) == hitResult.getSide()) { worldIn.setBlockState(pos, state.with(HAS_SAP, false).with(SAP_SIDE, Direction.fromHorizontal(0))); worldIn.playSound(null, pos.getX(), pos.getY(), pos.getZ(), ModSounds.SAP_EXTRACT, SoundCategory.BLOCKS, 0.6F, 1F); if (!worldIn.isClient) { - if (capEnergy != null) { - capEnergy.useEnergy(20, false); - - ExternalPowerSystems.requestEnergyFromArmor(capEnergy, playerIn); + if (Energy.valid(stack)) { + Energy.of(stack).use(20); + ExternalPowerSystems.requestEnergyFromArmor(stack, playerIn); } else { playerIn.getStackInHand(Hand.MAIN_HAND).damage(1, playerIn, playerEntity -> {}); } @@ -151,14 +145,4 @@ public class BlockRubberLog extends LogBlock { } return false; } - -// @Override -// public void getDrops(BlockState state, DefaultedList drops, World world, BlockPos pos, int fortune) { -// drops.add(new ItemStack(this)); -// if (state.get(HAS_SAP)) { -// if (new Random().nextInt(4) == 0) { -// drops.add(TRContent.Parts.SAP.getStack()); -// } -// } -// } } diff --git a/src/main/java/techreborn/events/StackToolTipHandler.java b/src/main/java/techreborn/events/StackToolTipHandler.java index 445ab8254..453aae789 100644 --- a/src/main/java/techreborn/events/StackToolTipHandler.java +++ b/src/main/java/techreborn/events/StackToolTipHandler.java @@ -40,9 +40,9 @@ import net.minecraft.text.Text; import net.minecraft.util.Formatting; import net.minecraft.util.registry.Registry; import reborncore.api.IListInfoProvider; -import reborncore.api.power.ItemPowerManager; import reborncore.common.powerSystem.PowerSystem; import reborncore.common.util.StringUtils; +import team.reborn.energy.Energy; import team.reborn.energy.EnergyHolder; import team.reborn.energy.EnergySide; import techreborn.TechReborn; @@ -61,10 +61,9 @@ public class StackToolTipHandler implements ItemTooltipCallback { if (item instanceof IListInfoProvider) { ((IListInfoProvider) item).addInfo(components, false, false); } else if (stack.getItem() instanceof EnergyHolder) { - ItemPowerManager itemPowerManager = new ItemPowerManager(stack); - LiteralText line1 = new LiteralText(PowerSystem.getLocaliszedPowerFormattedNoSuffix(itemPowerManager.getEnergyStored())); + LiteralText line1 = new LiteralText(PowerSystem.getLocaliszedPowerFormattedNoSuffix(Energy.of(stack).getEnergy())); line1.append("/"); - line1.append(PowerSystem.getLocaliszedPowerFormattedNoSuffix(itemPowerManager.getMaxEnergyStored())); + line1.append(PowerSystem.getLocaliszedPowerFormattedNoSuffix(Energy.of(stack).getMaxStored())); line1.append(" "); line1.append(PowerSystem.getDisplayPower().abbreviation); line1.formatted(Formatting.GOLD); @@ -72,7 +71,7 @@ public class StackToolTipHandler implements ItemTooltipCallback { components.add(1, line1); if (Screen.hasShiftDown()) { - int percentage = percentage(itemPowerManager.getMaxEnergyStored(), itemPowerManager.getEnergyStored()); + int percentage = percentage(Energy.of(stack).getMaxStored(), Energy.of(stack).getEnergy()); Formatting color = StringUtils.getPercentageColour(percentage); components.add(2, new LiteralText(color + "" + percentage + "%" + Formatting.GRAY + " Charged")); // TODO: show both input and output rates diff --git a/src/main/java/techreborn/items/armor/ItemCloakingDevice.java b/src/main/java/techreborn/items/armor/ItemCloakingDevice.java index 7310c634d..7cc8d8a3f 100644 --- a/src/main/java/techreborn/items/armor/ItemCloakingDevice.java +++ b/src/main/java/techreborn/items/armor/ItemCloakingDevice.java @@ -34,9 +34,9 @@ import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemStack; import net.minecraft.util.DefaultedList; import net.minecraft.world.World; -import reborncore.api.power.ItemPowerManager; import reborncore.common.powerSystem.PowerSystem; import reborncore.common.util.ItemUtils; +import team.reborn.energy.Energy; import team.reborn.energy.EnergyHolder; import team.reborn.energy.EnergySide; import team.reborn.energy.EnergyTier; @@ -61,21 +61,16 @@ public class ItemCloakingDevice extends ItemTRArmour implements EnergyHolder { public void inventoryTick(ItemStack stack, World worldIn, Entity entityIn, int itemSlot, boolean isSelected) { if (entityIn instanceof PlayerEntity) { PlayerEntity player = (PlayerEntity) entityIn; - ItemPowerManager capEnergy = new ItemPowerManager(stack); - if (capEnergy != null && capEnergy.getEnergyStored() >= usage) { - capEnergy.useEnergy(usage, false); - player.setInvisible(true); - } else { - if (!player.hasStatusEffect(StatusEffects.INVISIBILITY)) { - player.setInvisible(false); - } + + if (Energy.valid(stack)) { + Energy.of(stack).use(usage, () -> player.setInvisible(true), () -> { + if (!player.hasStatusEffect(StatusEffects.INVISIBILITY)) { + player.setInvisible(false); + } + }); } } } - - public void onArmorTick(World world, PlayerEntity player, ItemStack stack) { - - } @Environment(EnvType.CLIENT) @Override @@ -85,7 +80,7 @@ public class ItemCloakingDevice extends ItemTRArmour implements EnergyHolder { } InitUtils.initPoweredItems(TRContent.CLOAKING_DEVICE, itemList); } - + @Override public double getDurability(ItemStack stack) { return 1 - ItemUtils.getPowerForDurabilityBar(stack); @@ -101,7 +96,6 @@ public class ItemCloakingDevice extends ItemTRArmour implements EnergyHolder { return PowerSystem.getDisplayPower().colour; } - // IEnergyItemInfo @Override public double getMaxStoredPower() { diff --git a/src/main/java/techreborn/items/armor/ItemLithiumIonBatpack.java b/src/main/java/techreborn/items/armor/ItemLithiumIonBatpack.java index 8554098e3..405a04661 100644 --- a/src/main/java/techreborn/items/armor/ItemLithiumIonBatpack.java +++ b/src/main/java/techreborn/items/armor/ItemLithiumIonBatpack.java @@ -35,7 +35,6 @@ import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemStack; import net.minecraft.util.DefaultedList; import net.minecraft.world.World; -import reborncore.api.power.ItemPowerManager; import reborncore.common.powerSystem.ExternalPowerSystems; import reborncore.common.powerSystem.PowerSystem; import reborncore.common.util.ItemDurabilityExtensions; @@ -63,11 +62,9 @@ public class ItemLithiumIonBatpack extends ArmorItem implements EnergyHolder, It return; } - ItemPowerManager capEnergy = new ItemPowerManager(itemStack); - for (int i = 0; i < player.inventory.getInvSize(); i++) { if (!player.inventory.getInvStack(i).isEmpty()) { - ExternalPowerSystems.chargeItem(capEnergy, player.inventory.getInvStack(i)); + ExternalPowerSystems.chargeItem(itemStack, player.inventory.getInvStack(i)); } } } diff --git a/src/main/java/techreborn/items/battery/ItemBattery.java b/src/main/java/techreborn/items/battery/ItemBattery.java index 5d1556680..73c07426e 100644 --- a/src/main/java/techreborn/items/battery/ItemBattery.java +++ b/src/main/java/techreborn/items/battery/ItemBattery.java @@ -32,10 +32,10 @@ import net.minecraft.item.ItemPropertyGetter; import net.minecraft.item.ItemStack; import net.minecraft.util.Identifier; import net.minecraft.world.World; -import reborncore.api.power.ItemPowerManager; import reborncore.common.powerSystem.PowerSystem; import reborncore.common.util.ItemDurabilityExtensions; import reborncore.common.util.ItemUtils; +import team.reborn.energy.Energy; import team.reborn.energy.EnergyHolder; import team.reborn.energy.EnergyTier; import techreborn.TechReborn; @@ -55,7 +55,7 @@ public class ItemBattery extends Item implements EnergyHolder, ItemDurabilityExt @Override @Environment(EnvType.CLIENT) public float call(ItemStack stack, @Nullable World worldIn, @Nullable LivingEntity entityIn) { - if (!stack.isEmpty() && new ItemPowerManager(stack).getEnergyStored() == 0) { + if (!stack.isEmpty() && Energy.of(stack).getEnergy() == 0) { return 1.0F; } return 0.0F; diff --git a/src/main/java/techreborn/items/tool/ItemChainsaw.java b/src/main/java/techreborn/items/tool/ItemChainsaw.java index 2b317b180..94a1e007e 100644 --- a/src/main/java/techreborn/items/tool/ItemChainsaw.java +++ b/src/main/java/techreborn/items/tool/ItemChainsaw.java @@ -35,11 +35,11 @@ import net.minecraft.item.*; import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; -import reborncore.api.power.ItemPowerManager; import reborncore.common.powerSystem.ExternalPowerSystems; import reborncore.common.powerSystem.PowerSystem; import reborncore.common.util.ItemDurabilityExtensions; import reborncore.common.util.ItemUtils; +import team.reborn.energy.Energy; import team.reborn.energy.EnergyHolder; import team.reborn.energy.EnergySide; import team.reborn.energy.EnergyTier; @@ -65,7 +65,7 @@ public class ItemChainsaw extends AxeItem implements EnergyHolder, ItemDurabilit @Override @Environment(EnvType.CLIENT) public float call(ItemStack stack, @Nullable World worldIn, @Nullable LivingEntity entityIn) { - if (!stack.isEmpty() && new ItemPowerManager(stack).getEnergyStored() >= cost + if (!stack.isEmpty() && Energy.of(stack).getEnergy() >= cost && entityIn != null && entityIn.getMainHandStack().equals(stack)) { return 1.0F; } @@ -77,7 +77,7 @@ public class ItemChainsaw extends AxeItem implements EnergyHolder, ItemDurabilit // ItemAxe @Override public float getMiningSpeed(ItemStack stack, BlockState state) { - if (new ItemPowerManager(stack).getEnergyStored() >= cost + if (Energy.of(stack).getEnergy() >= cost && (state.getMaterial() == Material.WOOD)) { return this.poweredSpeed; } else { @@ -90,10 +90,8 @@ public class ItemChainsaw extends AxeItem implements EnergyHolder, ItemDurabilit public boolean postMine(ItemStack stack, World worldIn, BlockState blockIn, BlockPos pos, LivingEntity entityLiving) { Random rand = new Random(); if (rand.nextInt(EnchantmentHelper.getLevel(Enchantments.UNBREAKING, stack) + 1) == 0) { - ItemPowerManager capEnergy = new ItemPowerManager(stack); - - capEnergy.useEnergy(cost, false); - ExternalPowerSystems.requestEnergyFromArmor(capEnergy, entityLiving); + Energy.of(stack).use(cost); + ExternalPowerSystems.requestEnergyFromArmor(stack, entityLiving); } return true; } diff --git a/src/main/java/techreborn/items/tool/ItemDrill.java b/src/main/java/techreborn/items/tool/ItemDrill.java index 199e814ad..706a30140 100644 --- a/src/main/java/techreborn/items/tool/ItemDrill.java +++ b/src/main/java/techreborn/items/tool/ItemDrill.java @@ -31,11 +31,11 @@ import net.minecraft.entity.LivingEntity; import net.minecraft.item.*; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; -import reborncore.api.power.ItemPowerManager; import reborncore.common.powerSystem.ExternalPowerSystems; import reborncore.common.powerSystem.PowerSystem; import reborncore.common.util.ItemDurabilityExtensions; import reborncore.common.util.ItemUtils; +import team.reborn.energy.Energy; import team.reborn.energy.EnergyHolder; import team.reborn.energy.EnergySide; import team.reborn.energy.EnergyTier; @@ -59,7 +59,7 @@ public class ItemDrill extends PickaxeItem implements EnergyHolder, ItemDurabili // ItemPickaxe @Override public float getMiningSpeed(ItemStack stack, BlockState state) { - if (new ItemPowerManager(stack).getEnergyStored() < cost) { + if (Energy.of(stack).getEnergy() < cost) { return unpoweredSpeed; } if (Items.WOODEN_PICKAXE.getMiningSpeed(stack, state) > 1.0F @@ -75,10 +75,8 @@ public class ItemDrill extends PickaxeItem implements EnergyHolder, ItemDurabili public boolean postMine(ItemStack stack, World worldIn, BlockState blockIn, BlockPos pos, LivingEntity entityLiving) { Random rand = new Random(); if (rand.nextInt(EnchantmentHelper.getLevel(Enchantments.UNBREAKING, stack) + 1) == 0) { - ItemPowerManager capEnergy = new ItemPowerManager(stack); - - capEnergy.useEnergy(cost, false); - ExternalPowerSystems.requestEnergyFromArmor(capEnergy, entityLiving); + Energy.of(stack).use(cost); + ExternalPowerSystems.requestEnergyFromArmor(stack, entityLiving); } return true; } diff --git a/src/main/java/techreborn/items/tool/ItemJackhammer.java b/src/main/java/techreborn/items/tool/ItemJackhammer.java index 5e3a589c6..b948a28c2 100644 --- a/src/main/java/techreborn/items/tool/ItemJackhammer.java +++ b/src/main/java/techreborn/items/tool/ItemJackhammer.java @@ -35,11 +35,11 @@ import net.minecraft.item.PickaxeItem; import net.minecraft.item.ToolMaterials; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; -import reborncore.api.power.ItemPowerManager; import reborncore.common.powerSystem.ExternalPowerSystems; import reborncore.common.powerSystem.PowerSystem; import reborncore.common.util.ItemDurabilityExtensions; import reborncore.common.util.ItemUtils; +import team.reborn.energy.Energy; import team.reborn.energy.EnergyHolder; import team.reborn.energy.EnergySide; import team.reborn.energy.EnergyTier; @@ -61,7 +61,7 @@ public class ItemJackhammer extends PickaxeItem implements EnergyHolder, ItemDur // ItemPickaxe @Override public float getMiningSpeed(ItemStack stack, BlockState state) { - if (Block.isNaturalStone(state.getBlock()) && new ItemPowerManager(stack).getEnergyStored() >= cost) { + if (Block.isNaturalStone(state.getBlock()) && Energy.of(stack).getEnergy() >= cost) { return miningSpeed; } else { return 0.5F; @@ -73,10 +73,8 @@ public class ItemJackhammer extends PickaxeItem implements EnergyHolder, ItemDur public boolean postMine(ItemStack stack, World worldIn, BlockState blockIn, BlockPos pos, LivingEntity entityLiving) { Random rand = new Random(); if (rand.nextInt(EnchantmentHelper.getLevel(Enchantments.UNBREAKING, stack) + 1) == 0) { - ItemPowerManager capEnergy = new ItemPowerManager(stack); - - capEnergy.useEnergy(cost, false); - ExternalPowerSystems.requestEnergyFromArmor(capEnergy, entityLiving); + Energy.of(stack).use(cost); + ExternalPowerSystems.requestEnergyFromArmor(stack, entityLiving); } return true; } diff --git a/src/main/java/techreborn/items/tool/advanced/ItemRockCutter.java b/src/main/java/techreborn/items/tool/advanced/ItemRockCutter.java index f0a35724d..f2666f79a 100644 --- a/src/main/java/techreborn/items/tool/advanced/ItemRockCutter.java +++ b/src/main/java/techreborn/items/tool/advanced/ItemRockCutter.java @@ -35,11 +35,11 @@ import net.minecraft.item.*; import net.minecraft.util.DefaultedList; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; -import reborncore.api.power.ItemPowerManager; import reborncore.common.powerSystem.ExternalPowerSystems; import reborncore.common.powerSystem.PowerSystem; import reborncore.common.util.ItemDurabilityExtensions; import reborncore.common.util.ItemUtils; +import team.reborn.energy.Energy; import team.reborn.energy.EnergyHolder; import team.reborn.energy.EnergySide; import team.reborn.energy.EnergyTier; @@ -71,7 +71,7 @@ public class ItemRockCutter extends PickaxeItem implements EnergyHolder, ItemDur @Override public float getMiningSpeed(ItemStack stack, BlockState state) { - if (new ItemPowerManager(stack).getEnergyStored() < cost) { + if (Energy.of(stack).getEnergy() < cost) { return 2F; } else { return Items.DIAMOND_PICKAXE.getMiningSpeed(stack, state); @@ -83,10 +83,8 @@ public class ItemRockCutter extends PickaxeItem implements EnergyHolder, ItemDur public boolean postMine(ItemStack stack, World worldIn, BlockState blockIn, BlockPos pos, LivingEntity entityLiving) { Random rand = new Random(); if (rand.nextInt(EnchantmentHelper.getLevel(Enchantments.UNBREAKING, stack) + 1) == 0) { - ItemPowerManager capEnergy = new ItemPowerManager(stack); - - capEnergy.useEnergy(cost, false); - ExternalPowerSystems.requestEnergyFromArmor(capEnergy, entityLiving); + Energy.of(stack).use(cost); + ExternalPowerSystems.requestEnergyFromArmor(stack, entityLiving); } return true; } @@ -137,8 +135,7 @@ public class ItemRockCutter extends PickaxeItem implements EnergyHolder, ItemDur uncharged.addEnchantment(Enchantments.SILK_TOUCH, 1); ItemStack charged = new ItemStack(TRContent.ROCK_CUTTER); charged.addEnchantment(Enchantments.SILK_TOUCH, 1); - ItemPowerManager capEnergy = new ItemPowerManager(charged); - capEnergy.setEnergyStored(capEnergy.getMaxEnergyStored()); + Energy.of(charged).set(Energy.of(charged).getMaxStored()); itemList.add(uncharged); itemList.add(charged); diff --git a/src/main/java/techreborn/items/tool/industrial/ItemIndustrialChainsaw.java b/src/main/java/techreborn/items/tool/industrial/ItemIndustrialChainsaw.java index a98db1e41..e018bf38e 100644 --- a/src/main/java/techreborn/items/tool/industrial/ItemIndustrialChainsaw.java +++ b/src/main/java/techreborn/items/tool/industrial/ItemIndustrialChainsaw.java @@ -44,10 +44,10 @@ import net.minecraft.util.*; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.world.World; -import reborncore.api.power.ItemPowerManager; import reborncore.common.powerSystem.ExternalPowerSystems; import reborncore.common.util.ChatUtils; import reborncore.common.util.ItemUtils; +import team.reborn.energy.Energy; import techreborn.config.TechRebornConfig; import techreborn.init.TRContent; import techreborn.items.tool.ItemChainsaw; @@ -117,7 +117,7 @@ public class ItemIndustrialChainsaw extends ItemChainsaw { public TypedActionResult use(final World world, final PlayerEntity player, final Hand hand) { final ItemStack stack = player.getStackInHand(hand); if (player.isSneaking()) { - if (new ItemPowerManager(stack).getEnergyStored() < cost) { + if (Energy.of(stack).getEnergy() < cost) { ChatUtils.sendNoSpamMessages(MessageIDs.nanosaberID, new LiteralText( Formatting.GRAY + StringUtils.t("techreborn.message.nanosaberEnergyErrorTo") + " " + Formatting.GOLD + StringUtils.t("techreborn.message.nanosaberActivate"))); @@ -148,7 +148,7 @@ public class ItemIndustrialChainsaw extends ItemChainsaw { @Override public void usageTick(World world, LivingEntity entity, ItemStack stack, int i) { - if (ItemUtils.isActive(stack) && new ItemPowerManager(stack).getEnergyStored() < cost) { + if (ItemUtils.isActive(stack) && Energy.of(stack).getEnergy() < cost) { if(entity.world.isClient){ ChatUtils.sendNoSpamMessages(MessageIDs.nanosaberID, new LiteralText( Formatting.GRAY + StringUtils.t("techreborn.message.nanosaberEnergyError") + " " @@ -178,24 +178,21 @@ public class ItemIndustrialChainsaw extends ItemChainsaw { return; } - ItemPowerManager capEnergy = new ItemPowerManager(stack); - if (capEnergy.getEnergyStored() < cost) { - return; - } + Energy.of(stack).use(cost, () -> { + BlockState blockState = world.getBlockState(pos); + if (blockState.getHardness(world, pos) == -1.0F) { + return; + } + if(!(entityLiving instanceof PlayerEntity)){ + return; + } - BlockState blockState = world.getBlockState(pos); - if (blockState.getHardness(world, pos) == -1.0F) { - return; - } - if(!(entityLiving instanceof PlayerEntity)){ - return; - } + ExternalPowerSystems.requestEnergyFromArmor(stack, entityLiving); - capEnergy.useEnergy(cost, false); - ExternalPowerSystems.requestEnergyFromArmor(capEnergy, entityLiving); + blockState.getBlock().afterBreak(world, (PlayerEntity) entityLiving, pos, blockState, world.getBlockEntity(pos), stack); + world.setBlockState(pos, Blocks.AIR.getDefaultState()); + world.removeBlockEntity(pos); + }); - blockState.getBlock().afterBreak(world, (PlayerEntity) entityLiving, pos, blockState, world.getBlockEntity(pos), stack); - world.setBlockState(pos, Blocks.AIR.getDefaultState()); - world.removeBlockEntity(pos); } } diff --git a/src/main/java/techreborn/items/tool/industrial/ItemIndustrialDrill.java b/src/main/java/techreborn/items/tool/industrial/ItemIndustrialDrill.java index 7dd174b3c..5deed1ada 100644 --- a/src/main/java/techreborn/items/tool/industrial/ItemIndustrialDrill.java +++ b/src/main/java/techreborn/items/tool/industrial/ItemIndustrialDrill.java @@ -47,10 +47,10 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.world.RayTraceContext; import net.minecraft.world.World; -import reborncore.api.power.ItemPowerManager; import reborncore.common.powerSystem.ExternalPowerSystems; import reborncore.common.util.ChatUtils; import reborncore.common.util.ItemUtils; +import team.reborn.energy.Energy; import techreborn.config.TechRebornConfig; import techreborn.init.TRContent; import techreborn.items.tool.ItemDrill; @@ -121,17 +121,14 @@ public class ItemIndustrialDrill extends ItemDrill { private void breakBlock(BlockPos pos, World world, PlayerEntity playerIn, ItemStack drill) { BlockState blockState = world.getBlockState(pos); - ItemPowerManager capEnergy = new ItemPowerManager(drill); - - if(capEnergy.getEnergyStored() > cost){ - capEnergy.useEnergy(cost, false); - ExternalPowerSystems.requestEnergyFromArmor(capEnergy, playerIn); + Energy.of(drill).use(cost, () -> { + ExternalPowerSystems.requestEnergyFromArmor(drill, playerIn); blockState.getBlock().onBlockRemoved(blockState, world, pos, blockState, true); blockState.getBlock().afterBreak(world, playerIn, pos, blockState, world.getBlockEntity(pos), drill); world.setBlockState(pos, Blocks.AIR.getDefaultState()); world.removeBlockEntity(pos); - } + }); } private boolean shouldBreak(PlayerEntity playerIn, World worldIn, BlockPos originalPos, BlockPos pos) { @@ -176,7 +173,7 @@ public class ItemIndustrialDrill extends ItemDrill { public TypedActionResult use(final World world, final PlayerEntity player, final Hand hand) { final ItemStack stack = player.getStackInHand(hand); if (player.isSneaking()) { - if (new ItemPowerManager(stack).getEnergyStored() < cost) { + if (Energy.of(stack).getEnergy() < cost) { ChatUtils.sendNoSpamMessages(MessageIDs.nanosaberID, new LiteralText( Formatting.GRAY + StringUtils.t("techreborn.message.nanosaberEnergyErrorTo") + " " + Formatting.GOLD + StringUtils.t("techreborn.message.nanosaberActivate"))); @@ -207,7 +204,7 @@ public class ItemIndustrialDrill extends ItemDrill { @Override public void usageTick(World world, LivingEntity entity, ItemStack stack, int i) { - if (ItemUtils.isActive(stack) && new ItemPowerManager(stack).getEnergyStored() < cost) { + if (ItemUtils.isActive(stack) && Energy.of(stack).getEnergy() < cost) { if(entity.world.isClient){ ChatUtils.sendNoSpamMessages(MessageIDs.nanosaberID, new LiteralText( Formatting.GRAY + StringUtils.t("techreborn.message.nanosaberEnergyError") + " " diff --git a/src/main/java/techreborn/items/tool/industrial/ItemNanosaber.java b/src/main/java/techreborn/items/tool/industrial/ItemNanosaber.java index ca5254829..f65b29b0b 100644 --- a/src/main/java/techreborn/items/tool/industrial/ItemNanosaber.java +++ b/src/main/java/techreborn/items/tool/industrial/ItemNanosaber.java @@ -42,13 +42,13 @@ import net.minecraft.text.TranslatableText; import net.minecraft.util.*; import net.minecraft.world.World; import reborncore.api.items.ItemStackModifiers; -import reborncore.api.power.ItemPowerManager; import reborncore.common.powerSystem.ExternalPowerSystems; import reborncore.common.powerSystem.PowerSystem; import reborncore.common.util.ChatUtils; import reborncore.common.util.ItemDurabilityExtensions; import reborncore.common.util.ItemUtils; import reborncore.common.util.StringUtils; +import team.reborn.energy.Energy; import team.reborn.energy.EnergyHolder; import team.reborn.energy.EnergySide; import team.reborn.energy.EnergyTier; @@ -77,8 +77,7 @@ public class ItemNanosaber extends SwordItem implements EnergyHolder, ItemDurabi @Nullable LivingEntity entityIn) { if (ItemUtils.isActive(stack)) { - ItemPowerManager capEnergy = new ItemPowerManager(stack); - if (capEnergy.getMaxEnergyStored() - capEnergy.getEnergyStored() >= 0.9 * capEnergy.getMaxEnergyStored()) { + if (Energy.of(stack).getMaxStored() - Energy.of(stack).getEnergy() >= 0.9 * Energy.of(stack).getMaxStored()) { return 0.5F; } return 1.0F; @@ -91,14 +90,9 @@ public class ItemNanosaber extends SwordItem implements EnergyHolder, ItemDurabi // ItemSword @Override public boolean postHit(ItemStack stack, LivingEntity entityHit, LivingEntity entityHitter) { - ItemPowerManager capEnergy = new ItemPowerManager(stack); - if (capEnergy.getEnergyStored() >= cost) { - capEnergy.useEnergy(cost, false); - ExternalPowerSystems.requestEnergyFromArmor(capEnergy, entityHitter); - - return true; - } - return false; + boolean used = Energy.of(stack).use(cost); + ExternalPowerSystems.requestEnergyFromArmor(stack, entityHitter); + return used; } @Override @@ -116,7 +110,7 @@ public class ItemNanosaber extends SwordItem implements EnergyHolder, ItemDurabi public TypedActionResult use(final World world, final PlayerEntity player, final Hand hand) { final ItemStack stack = player.getStackInHand(hand); if (player.isSneaking()) { - if (new ItemPowerManager(stack).getEnergyStored() < cost) { + if (Energy.of(stack).getEnergy() < cost) { ChatUtils.sendNoSpamMessages(MessageIDs.nanosaberID, new LiteralText( Formatting.GRAY + StringUtils.t("techreborn.message.nanosaberEnergyErrorTo") + " " + Formatting.GOLD + StringUtils.t("techreborn.message.nanosaberActivate"))); @@ -147,7 +141,7 @@ public class ItemNanosaber extends SwordItem implements EnergyHolder, ItemDurabi @Override public void inventoryTick(ItemStack stack, World worldIn, Entity entityIn, int itemSlot, boolean isSelected) { - if (ItemUtils.isActive(stack) && new ItemPowerManager(stack).getEnergyStored() < cost) { + if (ItemUtils.isActive(stack) && Energy.of(stack).getEnergy() < cost) { if(worldIn.isClient){ ChatUtils.sendNoSpamMessages(MessageIDs.nanosaberID, new LiteralText( Formatting.GRAY + StringUtils.t("techreborn.message.nanosaberEnergyError") + " " @@ -191,14 +185,12 @@ public class ItemNanosaber extends SwordItem implements EnergyHolder, ItemDurabi ItemStack inactiveCharged = new ItemStack(TRContent.NANOSABER); inactiveCharged.setTag(new CompoundTag()); inactiveCharged.getTag().putBoolean("isActive", false); - ItemPowerManager capEnergy = new ItemPowerManager(inactiveCharged); - capEnergy.setEnergyStored(capEnergy.getMaxEnergyStored()); + Energy.of(inactiveCharged).set(Energy.of(inactiveCharged).getMaxStored()); ItemStack activeCharged = new ItemStack(TRContent.NANOSABER); activeCharged.setTag(new CompoundTag()); activeCharged.getTag().putBoolean("isActive", true); - ItemPowerManager capEnergy2 = new ItemPowerManager(activeCharged); - capEnergy2.setEnergyStored(capEnergy2.getMaxEnergyStored()); + Energy.of(activeCharged).set(Energy.of(activeCharged).getMaxStored()); itemList.add(inactiveUncharged); itemList.add(inactiveCharged); diff --git a/src/main/java/techreborn/items/tool/industrial/ItemOmniTool.java b/src/main/java/techreborn/items/tool/industrial/ItemOmniTool.java index 40dd81cb1..022250861 100644 --- a/src/main/java/techreborn/items/tool/industrial/ItemOmniTool.java +++ b/src/main/java/techreborn/items/tool/industrial/ItemOmniTool.java @@ -39,12 +39,12 @@ import net.minecraft.util.DefaultedList; import net.minecraft.util.Formatting; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; -import reborncore.api.power.ItemPowerManager; import reborncore.common.powerSystem.ExternalPowerSystems; import reborncore.common.powerSystem.PowerSystem; import reborncore.common.util.ItemDurabilityExtensions; import reborncore.common.util.ItemUtils; import reborncore.common.util.TorchHelper; +import team.reborn.energy.Energy; import team.reborn.energy.EnergyHolder; import team.reborn.energy.EnergySide; import team.reborn.energy.EnergyTier; @@ -79,11 +79,8 @@ public class ItemOmniTool extends PickaxeItem implements EnergyHolder, ItemDurab // ItemTool @Override public boolean postMine(ItemStack stack, World worldIn, BlockState blockIn, BlockPos pos, LivingEntity entityLiving) { - ItemPowerManager capEnergy = new ItemPowerManager(stack); - - capEnergy.useEnergy(cost, false); - ExternalPowerSystems.requestEnergyFromArmor(capEnergy, entityLiving); - + Energy.of(stack).use(cost); + ExternalPowerSystems.requestEnergyFromArmor(stack, entityLiving); return true; } @@ -110,13 +107,8 @@ public class ItemOmniTool extends PickaxeItem implements EnergyHolder, ItemDurab @Override public boolean postHit(ItemStack stack, LivingEntity entityliving, LivingEntity attacker) { - ItemPowerManager capEnergy = new ItemPowerManager(stack); - if (capEnergy.getEnergyStored() >= hitCost) { - capEnergy.useEnergy(hitCost, false); - ExternalPowerSystems.requestEnergyFromArmor(capEnergy, entityliving); - - entityliving.damage(DamageSource.player((PlayerEntity) attacker), 8F); - } + Energy.of(stack).use(hitCost, () -> entityliving.damage(DamageSource.player((PlayerEntity) attacker), 8F)); + ExternalPowerSystems.requestEnergyFromArmor(stack, entityliving); return false; } diff --git a/src/main/java/techreborn/utils/InitUtils.java b/src/main/java/techreborn/utils/InitUtils.java index c07d227f4..1fd2cb26a 100644 --- a/src/main/java/techreborn/utils/InitUtils.java +++ b/src/main/java/techreborn/utils/InitUtils.java @@ -32,7 +32,7 @@ import net.minecraft.util.DefaultedList; import net.minecraft.util.Identifier; import net.minecraft.util.registry.Registry; import reborncore.RebornRegistry; -import reborncore.api.power.ItemPowerManager; +import team.reborn.energy.Energy; import techreborn.TechReborn; public class InitUtils { @@ -54,8 +54,8 @@ public class InitUtils { public static void initPoweredItems(Item item, DefaultedList itemList) { ItemStack uncharged = new ItemStack(item); ItemStack charged = new ItemStack(item); - ItemPowerManager capEnergy = new ItemPowerManager(charged); - capEnergy.setEnergyStored(capEnergy.getMaxEnergyStored()); + + Energy.of(charged).set(Energy.of(charged).getMaxStored()); itemList.add(uncharged); itemList.add(charged);