diff --git a/src/main/java/org/KaiFlo/SolarCell/Helpers/BlockHelper.java b/src/main/java/org/KaiFlo/SolarCell/Helpers/BlockHelper.java index 83f60f2..759d50e 100644 --- a/src/main/java/org/KaiFlo/SolarCell/Helpers/BlockHelper.java +++ b/src/main/java/org/KaiFlo/SolarCell/Helpers/BlockHelper.java @@ -1,16 +1,28 @@ package org.KaiFlo.SolarCell.Helpers; +import com.hypixel.hytale.component.CommandBuffer; +import com.hypixel.hytale.component.Ref; +import com.hypixel.hytale.logger.HytaleLogger; +import com.hypixel.hytale.math.util.ChunkUtil; +import com.hypixel.hytale.server.core.modules.block.BlockModule; +import com.hypixel.hytale.server.core.universe.world.chunk.WorldChunk; +import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore; +import org.checkerframework.checker.nullness.compatqual.NonNullDecl; + public class BlockHelper { public static void executeForCubeAround(int x, int y, int z, int size, boolean own, Callback callback) { - for (int x1 = x - size / 2; x1 < x + size / 2; x1++) { - for (int y1 = y - size / 2; y1 < y + size / 2; y1++) { - for (int z1 = z - size / 2; z1 < z + size / 2; z1++) { - if (!(x1 == x && y1 == y && z1 == z)) { - callback.accept(x1, y1, z1); + for (int xOffset = 0; xOffset < size; xOffset++) { + for (int yOffset = 0; yOffset blockRef, @NonNullDecl CommandBuffer commandBuffer) { + BlockModule.BlockStateInfo blockInfo = commandBuffer.getComponent(blockRef, BlockModule.BlockStateInfo.getComponentType()); + if(blockInfo == null) return; + + WorldChunk worldChunk = commandBuffer.getComponent(blockInfo.getChunkRef(), WorldChunk.getComponentType()); + if(worldChunk == null) return; + + int x = ChunkUtil.xFromBlockInColumn(blockInfo.getIndex()); + int y = ChunkUtil.yFromBlockInColumn(blockInfo.getIndex()); + int z = ChunkUtil.zFromBlockInColumn(blockInfo.getIndex()); + + worldChunk.setTicking(x, y, z, true); + HytaleLogger.getLogger().atInfo().log(String.valueOf(worldChunk.isTicking(x, y, z))); + } }