From bf0a718d240866e3ced7a47e7013625cade55780 Mon Sep 17 00:00:00 2001 From: jottyfan Date: Sat, 17 Jul 2021 16:54:43 +0200 Subject: [PATCH] blockentity trials --- .../blockentity/DrillBlockDownEntity.java | 34 ++++++++++++------- .../quickiefabric/blocks/BlockDrillDown.java | 12 ++++++- 2 files changed, 33 insertions(+), 13 deletions(-) diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/blockentity/DrillBlockDownEntity.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/blockentity/DrillBlockDownEntity.java index 6c9026a..072e1f9 100644 --- a/src/main/java/de/jottyfan/minecraft/quickiefabric/blockentity/DrillBlockDownEntity.java +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/blockentity/DrillBlockDownEntity.java @@ -4,7 +4,6 @@ import de.jottyfan.minecraft.quickiefabric.blocks.QuickieBlocks; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.block.entity.BlockEntity; -import net.minecraft.util.Tickable; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; @@ -13,13 +12,13 @@ import net.minecraft.world.World; * @author jotty * */ -public class DrillBlockDownEntity extends BlockEntity implements Tickable { +public class DrillBlockDownEntity extends BlockEntity { private static final Integer MAXDRILLSTEP = 20; private Integer drillstep; - public DrillBlockDownEntity() { - super(QuickieFabricBlockEntity.DRILL_DOWN); + public DrillBlockDownEntity(BlockPos pos, BlockState state) { + super(QuickieFabricBlockEntity.DRILL_DOWN, pos, state); } protected static final void moveBlockWithEntity(BlockPos from, BlockPos to, World world) { @@ -29,7 +28,7 @@ public class DrillBlockDownEntity extends BlockEntity implements Tickable { world.setBlockState(from, Blocks.AIR.getDefaultState()); world.setBlockState(to, bs); world.removeBlockEntity(from); - world.setBlockEntity(to, be); + world.addBlockEntity(be); } } @@ -42,13 +41,24 @@ public class DrillBlockDownEntity extends BlockEntity implements Tickable { } } - - @Override - public void tick() { - drillstep = drillstep == null ? MAXDRILLSTEP : drillstep - 1; - if (drillstep < 1) { - drillstep = MAXDRILLSTEP; - drill(getPos(), getPos().down(), getWorld()); + public static void tick(World world, BlockPos pos, BlockState state, DrillBlockDownEntity be) { + if (be.getDrillstep() < 1) { + be.setDrillstep(MAXDRILLSTEP); + drill(pos, pos.down(), world); + } else { + be.doDrillstep(); } } + + public void doDrillstep() { + setDrillstep(getDrillstep() - 1); + } + + public Integer getDrillstep() { + return drillstep == null ? MAXDRILLSTEP : drillstep; + } + + public void setDrillstep(Integer drillstep) { + this.drillstep = drillstep; + } } diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockDrillDown.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockDrillDown.java index 0e1620d..1478be6 100644 --- a/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockDrillDown.java +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockDrillDown.java @@ -5,14 +5,18 @@ import java.util.List; import de.jottyfan.minecraft.quickiefabric.blockentity.DrillBlockDownEntity; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.minecraft.block.Block; import net.minecraft.block.BlockEntityProvider; import net.minecraft.block.BlockState; import net.minecraft.block.FallingBlock; import net.minecraft.block.Material; import net.minecraft.block.entity.BlockEntity; +import net.minecraft.block.entity.BlockEntityTicker; +import net.minecraft.block.entity.BlockEntityType; import net.minecraft.item.ItemStack; import net.minecraft.loot.context.LootContext.Builder; import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; /** * @@ -26,7 +30,7 @@ public class BlockDrillDown extends FallingBlock implements BlockEntityProvider } public BlockEntity createBlockEntity(BlockPos pos, BlockState blockState) { - return new DrillBlockDownEntity(); + return new DrillBlockDownEntity(pos, blockState); } @Override @@ -35,4 +39,10 @@ public class BlockDrillDown extends FallingBlock implements BlockEntityProvider list.add(new ItemStack(QuickieBlocks.DRILL_DOWN)); return list; } + + @Override + public BlockEntityTicker getTicker(World world, BlockState state, + BlockEntityType type) { + return DrillBlockDownEntity::tick; + } }