Skip to content

Commit 51d58ae

Browse files
committed
Start a creative energy block just because
1 parent 904edfc commit 51d58ae

File tree

5 files changed

+109
-4
lines changed

5 files changed

+109
-4
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package dev.wolfieboy09.qstorage.block.creative_energy_block;
2+
3+
import com.mojang.serialization.MapCodec;
4+
import dev.wolfieboy09.qstorage.block.AbstractBaseEntityBlock;
5+
import net.minecraft.core.BlockPos;
6+
import net.minecraft.world.level.Level;
7+
import net.minecraft.world.level.block.BaseEntityBlock;
8+
import net.minecraft.world.level.block.entity.BlockEntity;
9+
import net.minecraft.world.level.block.entity.BlockEntityTicker;
10+
import net.minecraft.world.level.block.entity.BlockEntityType;
11+
import net.minecraft.world.level.block.state.BlockState;
12+
import org.jetbrains.annotations.NotNull;
13+
import org.jetbrains.annotations.Nullable;
14+
15+
import javax.annotation.ParametersAreNonnullByDefault;
16+
17+
@ParametersAreNonnullByDefault
18+
public class CreativeEnergyBlock extends AbstractBaseEntityBlock {
19+
private static final MapCodec<CreativeEnergyBlock> CODEC = simpleCodec(CreativeEnergyBlock::new);
20+
21+
public CreativeEnergyBlock(Properties properties) {
22+
super(properties);
23+
}
24+
25+
@Override
26+
protected MapCodec<? extends BaseEntityBlock> codec() {
27+
return CODEC;
28+
}
29+
30+
@Override
31+
public @Nullable BlockEntity newBlockEntity(BlockPos blockPos, BlockState blockState) {
32+
return new CreativeEnergyBlockEntity(blockPos, blockState);
33+
}
34+
35+
@Override
36+
public @Nullable <T extends BlockEntity> BlockEntityTicker<T> getTicker(Level level, @NotNull BlockState blockState, @NotNull BlockEntityType<T> blockEntityType) {
37+
return level.isClientSide ? null : ((level1, pos, state, blockEntity) -> ((CreativeEnergyBlockEntity) blockEntity).tick());
38+
}
39+
}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package dev.wolfieboy09.qstorage.block.creative_energy_block;
2+
3+
import dev.wolfieboy09.qstorage.block.AbstractEnergyBlockEntity;
4+
import dev.wolfieboy09.qstorage.registries.QSBlockEntities;
5+
import net.minecraft.core.BlockPos;
6+
import net.minecraft.core.Direction;
7+
import net.minecraft.world.level.block.entity.BlockEntity;
8+
import net.minecraft.world.level.block.state.BlockState;
9+
import net.neoforged.neoforge.capabilities.Capabilities;
10+
import net.neoforged.neoforge.energy.EnergyStorage;
11+
import net.neoforged.neoforge.energy.IEnergyStorage;
12+
13+
import java.util.List;
14+
15+
public class CreativeEnergyBlockEntity extends AbstractEnergyBlockEntity {
16+
private final List<Direction> directions = List.of(Direction.UP, Direction.DOWN, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST);
17+
18+
public CreativeEnergyBlockEntity(BlockPos pos, BlockState blockState) {
19+
super(QSBlockEntities.CREATIVE_ENERGY_BLOCK.get(), pos, blockState, 1000000000, 1000000000);
20+
}
21+
22+
@Override
23+
public boolean canReceive() {
24+
return false;
25+
}
26+
27+
public EnergyStorage getEnergyHandler() {
28+
return this.getEnergyStorage();
29+
}
30+
31+
@Override
32+
public int getEnergyStored() {
33+
return 1000000000;
34+
}
35+
36+
public void tick() {
37+
if (level == null) return;
38+
for (Direction direction : this.directions) {
39+
BlockPos relativePos = getBlockPos().relative(direction);
40+
BlockEntity blockEntity = level.getBlockEntity(relativePos);
41+
42+
if (blockEntity != null) {
43+
IEnergyStorage blockEnergyStorage = level.getCapability(Capabilities.EnergyStorage.BLOCK, getBlockPos(), direction.getOpposite());
44+
if (blockEnergyStorage != null) {
45+
int energyToTransfer = Math.min(100000, blockEnergyStorage.getMaxEnergyStored() - blockEnergyStorage.getEnergyStored());
46+
if (energyToTransfer > 0) {
47+
blockEnergyStorage.receiveEnergy(energyToTransfer, false);
48+
}
49+
}
50+
}
51+
}
52+
}
53+
}

src/main/java/dev/wolfieboy09/qstorage/registries/QSBlockEntities.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import dev.wolfieboy09.qstorage.QuantiumizedStorage;
44
import dev.wolfieboy09.qstorage.block.circut_engraver.CircuitEngraverBlockEntity;
5+
import dev.wolfieboy09.qstorage.block.creative_energy_block.CreativeEnergyBlockEntity;
56
import dev.wolfieboy09.qstorage.block.disk_assembler.DiskAssemblerBlockEntity;
67
import dev.wolfieboy09.qstorage.block.storage_matrix.StorageMatrixBlockEntity;
78
import net.minecraft.core.registries.Registries;
@@ -36,6 +37,12 @@ public class QSBlockEntities {
3637
QSBlocks.CIRCUIT_ENGRAVER
3738
);
3839

40+
public static final Supplier<BlockEntityType<CreativeEnergyBlockEntity>> CREATIVE_ENERGY_BLOCK = createBlockEntity(
41+
"creative_energy_block",
42+
CreativeEnergyBlockEntity::new,
43+
QSBlocks.CREATIVE_ENERGY_BLOCK
44+
);
45+
3946
private static <T extends BlockEntity> @NotNull Supplier<BlockEntityType<T>> createBlockEntity(String name, BlockEntityType.BlockEntitySupplier<T> blockEntitySupplier, Supplier<? extends Block> block) {
4047
return BLOCK_ENTITY_TYPES.register(
4148
name,

src/main/java/dev/wolfieboy09/qstorage/registries/QSBlocks.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import dev.wolfieboy09.qstorage.QuantiumizedStorage;
44
import dev.wolfieboy09.qstorage.block.circut_engraver.CircuitEngraverBlock;
5+
import dev.wolfieboy09.qstorage.block.creative_energy_block.CreativeEnergyBlock;
6+
import dev.wolfieboy09.qstorage.block.creative_energy_block.CreativeEnergyBlockEntity;
57
import dev.wolfieboy09.qstorage.block.disk_assembler.DiskAssemblerBlock;
68
import dev.wolfieboy09.qstorage.block.storage_matrix.StorageMatrixBlock;
79
import net.minecraft.MethodsReturnNonnullByDefault;
@@ -21,7 +23,7 @@ public class QSBlocks {
2123
public static final DeferredRegister.Blocks BLOCKS = DeferredRegister.createBlocks(QuantiumizedStorage.MOD_ID);
2224
public static final DeferredRegister.Items BLOCK_ITEMS = DeferredRegister.createItems(QuantiumizedStorage.MOD_ID);
2325

24-
public static final DeferredBlock<DiskAssemblerBlock> DISK_ASSEMBLER = registerBlock(
26+
public static final DeferredBlock<DiskAssemblerBlock> DISK_ASSEMBLER = registerBlockWithProperties(
2527
"disk_assembler",
2628
() -> new DiskAssemblerBlock(BlockBehaviour.Properties.of().noOcclusion())
2729
);
@@ -36,13 +38,18 @@ public class QSBlocks {
3638
CircuitEngraverBlock::new
3739
);
3840

41+
public static final DeferredBlock<CreativeEnergyBlock> CREATIVE_ENERGY_BLOCK = registerBlock(
42+
"creative_energy_block",
43+
CreativeEnergyBlock::new
44+
);
45+
3946
private static <T extends Block> DeferredBlock<T> registerBlock(String name, Function<BlockBehaviour.Properties, T> block) {
4047
DeferredBlock<T> toReturn = BLOCKS.register(name, () -> block.apply(BlockBehaviour.Properties.of()));
4148
registerBlockItem(name, toReturn);
4249
return toReturn;
4350
}
4451

45-
private static <T extends Block> DeferredBlock<T> registerBlock(String name, Supplier<T> block) {
52+
private static <T extends Block> DeferredBlock<T> registerBlockWithProperties(String name, Supplier<T> block) {
4653
DeferredBlock<T> toReturn = BLOCKS.register(name, block);
4754
registerBlockItem(name, toReturn);
4855
return toReturn;

src/main/java/dev/wolfieboy09/qstorage/registries/QSCapabilities.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import dev.wolfieboy09.qstorage.QuantiumizedStorage;
44
import dev.wolfieboy09.qstorage.block.disk_assembler.DiskAssemblerBlockEntity;
5-
import dev.wolfieboy09.qstorage.block.storage_matrix.StorageMatrixBlockEntity;
65
import net.neoforged.bus.api.SubscribeEvent;
76
import net.neoforged.fml.common.EventBusSubscriber;
87
import net.neoforged.neoforge.capabilities.Capabilities;
@@ -16,6 +15,6 @@ public static void register(@NotNull RegisterCapabilitiesEvent event) {
1615
event.registerBlockEntity(Capabilities.EnergyStorage.BLOCK, QSBlockEntities.DISK_ASSEMBLER.get(), DiskAssemblerBlockEntity::getEnergyHandler);
1716
event.registerBlockEntity(Capabilities.ItemHandler.BLOCK, QSBlockEntities.DISK_ASSEMBLER.get(), (block, dir) -> block.getInventoryHandler());
1817

19-
event.registerBlockEntity(Capabilities.EnergyStorage.BLOCK, QSBlockEntities.STORAGE_MATRIX.get(), StorageMatrixBlockEntity::getEnergyHandler);
18+
event.registerBlockEntity(Capabilities.EnergyStorage.BLOCK, QSBlockEntities.CREATIVE_ENERGY_BLOCK.get(), (block, dir) -> block.getEnergyHandler());
2019
}
2120
}

0 commit comments

Comments
 (0)