diff --git a/src/main/java/techreborn/blocks/generator/BlockSolarPanel.java b/src/main/java/techreborn/blocks/generator/BlockSolarPanel.java index 8aac64ff9..a5e1ecb64 100644 --- a/src/main/java/techreborn/blocks/generator/BlockSolarPanel.java +++ b/src/main/java/techreborn/blocks/generator/BlockSolarPanel.java @@ -24,10 +24,14 @@ package techreborn.blocks.generator; +import net.minecraft.block.BlockState; import net.minecraft.block.entity.BlockEntity; +import net.minecraft.util.math.BlockPos; import net.minecraft.world.BlockView; +import net.minecraft.world.World; import reborncore.api.blockentity.IMachineGuiHandler; import reborncore.common.blocks.BlockMachineBase; +import reborncore.common.powerSystem.PowerAcceptorBlockEntity; import techreborn.init.TRContent.SolarPanels; import techreborn.blockentity.generator.SolarPanelBlockEntity; @@ -52,4 +56,14 @@ public class BlockSolarPanel extends BlockMachineBase { public IMachineGuiHandler getGui() { return null; } + + @Override + public boolean hasComparatorOutput(BlockState state) { + return true; + } + + @Override + public int getComparatorOutput(BlockState state, World world, BlockPos pos) { + return PowerAcceptorBlockEntity.calculateComparatorOutputFromEnergy(world.getBlockEntity(pos)); + } } diff --git a/src/main/java/techreborn/blocks/generator/GenericGeneratorBlock.java b/src/main/java/techreborn/blocks/generator/GenericGeneratorBlock.java new file mode 100644 index 000000000..5b5b85e5d --- /dev/null +++ b/src/main/java/techreborn/blocks/generator/GenericGeneratorBlock.java @@ -0,0 +1,31 @@ +package techreborn.blocks.generator; + +import net.minecraft.block.BlockState; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import reborncore.common.powerSystem.PowerAcceptorBlockEntity; +import techreborn.blocks.GenericMachineBlock; +import techreborn.client.EGui; + +import java.util.function.Supplier; + +/** + * An extension of {@link GenericMachineBlock} that provides utilities + * for generators, like comparator output based on energy. + */ +public class GenericGeneratorBlock extends GenericMachineBlock { + public GenericGeneratorBlock(EGui gui, Supplier blockEntityClass) { + super(gui, blockEntityClass); + } + + @Override + public boolean hasComparatorOutput(BlockState state) { + return true; + } + + @Override + public int getComparatorOutput(BlockState state, World world, BlockPos pos) { + return PowerAcceptorBlockEntity.calculateComparatorOutputFromEnergy(world.getBlockEntity(pos)); + } +} diff --git a/src/main/java/techreborn/blocks/storage/BlockEnergyStorage.java b/src/main/java/techreborn/blocks/storage/BlockEnergyStorage.java index 0ebcfb6d5..8520b06d2 100644 --- a/src/main/java/techreborn/blocks/storage/BlockEnergyStorage.java +++ b/src/main/java/techreborn/blocks/storage/BlockEnergyStorage.java @@ -45,6 +45,7 @@ import reborncore.api.ToolManager; import reborncore.api.blockentity.IMachineGuiHandler; import reborncore.common.BaseBlockEntityProvider; import reborncore.common.blocks.BlockWrenchEventHandler; +import reborncore.common.powerSystem.PowerAcceptorBlockEntity; import reborncore.common.util.WrenchUtils; import java.util.Locale; @@ -137,4 +138,14 @@ public abstract class BlockEnergyStorage extends BaseBlockEntityProvider { } setFacing(facing, worldIn, pos); } + + @Override + public boolean hasComparatorOutput(BlockState state) { + return true; + } + + @Override + public int getComparatorOutput(BlockState state, World world, BlockPos pos) { + return PowerAcceptorBlockEntity.calculateComparatorOutputFromEnergy(world.getBlockEntity(pos)); + } } diff --git a/src/main/java/techreborn/init/TRContent.java b/src/main/java/techreborn/init/TRContent.java index 8c8d77fe7..9f0f963f0 100644 --- a/src/main/java/techreborn/init/TRContent.java +++ b/src/main/java/techreborn/init/TRContent.java @@ -410,20 +410,20 @@ public class TRContent { SOLID_CANNING_MACHINE(new GenericMachineBlock(EGui.SOLID_CANNING_MACHINE, SoildCanningMachineBlockEntity::new)), WIRE_MILL(new GenericMachineBlock(EGui.WIRE_MILL, WireMillBlockEntity::new)), - DIESEL_GENERATOR(new GenericMachineBlock(EGui.DIESEL_GENERATOR, DieselGeneratorBlockEntity::new)), - DRAGON_EGG_SYPHON(new GenericMachineBlock(null, DragonEggSyphonBlockEntity::new)), + DIESEL_GENERATOR(new GenericGeneratorBlock(EGui.DIESEL_GENERATOR, DieselGeneratorBlockEntity::new)), + DRAGON_EGG_SYPHON(new GenericGeneratorBlock(null, DragonEggSyphonBlockEntity::new)), FUSION_COIL(new BlockFusionCoil()), FUSION_CONTROL_COMPUTER(new BlockFusionControlComputer()), - GAS_TURBINE(new GenericMachineBlock(EGui.GAS_TURBINE, GasTurbineBlockEntity::new)), - LIGHTNING_ROD(new GenericMachineBlock(null, LightningRodBlockEntity::new)), + GAS_TURBINE(new GenericGeneratorBlock(EGui.GAS_TURBINE, GasTurbineBlockEntity::new)), + LIGHTNING_ROD(new GenericGeneratorBlock(null, LightningRodBlockEntity::new)), MAGIC_ENERGY_ABSORBER (new BlockMagicEnergyAbsorber()), MAGIC_ENERGY_CONVERTER(new BlockMagicEnergyConverter()), - PLASMA_GENERATOR(new GenericMachineBlock(EGui.PLASMA_GENERATOR, PlasmaGeneratorBlockEntity::new)), - SEMI_FLUID_GENERATOR(new GenericMachineBlock(EGui.SEMIFLUID_GENERATOR, SemiFluidGeneratorBlockEntity::new)), - SOLID_FUEL_GENERATOR(new GenericMachineBlock(EGui.GENERATOR, SolidFuelGeneratorBlockEntity::new)), - THERMAL_GENERATOR(new GenericMachineBlock(EGui.THERMAL_GENERATOR, ThermalGeneratorBlockEntity::new)), - WATER_MILL(new GenericMachineBlock(null, WaterMillBlockEntity::new)), - WIND_MILL(new GenericMachineBlock(null, WindMillBlockEntity::new)), + PLASMA_GENERATOR(new GenericGeneratorBlock(EGui.PLASMA_GENERATOR, PlasmaGeneratorBlockEntity::new)), + SEMI_FLUID_GENERATOR(new GenericGeneratorBlock(EGui.SEMIFLUID_GENERATOR, SemiFluidGeneratorBlockEntity::new)), + SOLID_FUEL_GENERATOR(new GenericGeneratorBlock(EGui.GENERATOR, SolidFuelGeneratorBlockEntity::new)), + THERMAL_GENERATOR(new GenericGeneratorBlock(EGui.THERMAL_GENERATOR, ThermalGeneratorBlockEntity::new)), + WATER_MILL(new GenericGeneratorBlock(null, WaterMillBlockEntity::new)), + WIND_MILL(new GenericGeneratorBlock(null, WindMillBlockEntity::new)), CREATIVE_QUANTUM_CHEST(new BlockCreativeQuantumChest()), CREATIVE_QUANTUM_TANK(new GenericMachineBlock(EGui.QUANTUM_TANK, CreativeQuantumTankBlockEntity::new)),