Add comparator support for energy storage and generator blocks (#1901)
* Add comparator support for energy storage blocks Does not update automatically yet, so there needs to be a call to World.updateHorizontalAdjacent. * Switch to ceil() in energy storage comparator calculation Should prevent low amounts of energy of rounding to 0. * Add comparator support to generators Requires TechReborn/RebornCore#132.
This commit is contained in:
parent
4764271967
commit
87a36d1c23
4 changed files with 66 additions and 10 deletions
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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<BlockEntity> 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));
|
||||
}
|
||||
}
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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)),
|
||||
|
|
Loading…
Reference in a new issue