From a12beb0d3dc0d87cdb52c483804c897bb9655de0 Mon Sep 17 00:00:00 2001 From: Jottyfan Date: Mon, 25 Dec 2023 16:54:52 +0100 Subject: [PATCH] fuel for the drills needed --- gradle.properties | 2 +- .../blockentity/DrillBlockEntity.java | 22 +++--- .../quickiefabric/blocks/BlockDrillDown.java | 6 +- .../quickiefabric/blocks/BlockDrillEast.java | 2 +- .../quickiefabric/blocks/BlockDrillNorth.java | 2 +- .../quickiefabric/blocks/BlockDrillSouth.java | 2 +- .../quickiefabric/blocks/BlockDrillWest.java | 2 +- .../quickiefabric/blocks/DrillBlock.java | 78 +++++++++++++++++++ .../assets/quickiefabric/lang/de_de.json | 1 + .../assets/quickiefabric/lang/en_us.json | 1 + 10 files changed, 102 insertions(+), 16 deletions(-) create mode 100644 src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/DrillBlock.java diff --git a/gradle.properties b/gradle.properties index e69ba84..c035ba4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,7 +9,7 @@ loader_version=0.15.1 # Mod Properties - mod_version = 1.20.4.3 + mod_version = 1.20.4.4 maven_group = de.jottyfan.minecraft archives_base_name = quickiefabric diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/blockentity/DrillBlockEntity.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/blockentity/DrillBlockEntity.java index a801ab0..ff0b736 100644 --- a/src/main/java/de/jottyfan/minecraft/quickiefabric/blockentity/DrillBlockEntity.java +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/blockentity/DrillBlockEntity.java @@ -2,6 +2,7 @@ package de.jottyfan.minecraft.quickiefabric.blockentity; import java.util.List; +import de.jottyfan.minecraft.quickiefabric.blocks.DrillBlock; import de.jottyfan.minecraft.quickiefabric.blocks.QuickieBlocks; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; @@ -11,7 +12,6 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; public abstract class DrillBlockEntity extends BlockEntity { - private Integer drillstep; private final Integer maxDrillStep; @@ -25,7 +25,8 @@ public abstract class DrillBlockEntity extends BlockEntity { BlockState bs = world.getBlockState(from); if (be != null) { world.setBlockState(from, Blocks.AIR.getDefaultState()); - world.setBlockState(to, bs); + Integer newFuel = bs.get(DrillBlock.FUEL) - 1; + world.setBlockState(to, bs.with(DrillBlock.FUEL, newFuel)); world.addBlockEntity(be); world.removeBlockEntity(from); } @@ -44,14 +45,17 @@ public abstract class DrillBlockEntity extends BlockEntity { return lastSuccess; } - public static void tick(World world, BlockPos pos, BlockState state, DrillBlockEntity be, Integer maxDrillStep, List drillPosition) { - if (be.getDrillstep() < 1) { - be.setDrillstep(maxDrillStep); - if (drill(pos, drillPosition, world)) { - moveBlockWithEntity(pos, drillPosition.get(drillPosition.size() - 1), world); + public static void tick(World world, BlockPos pos, BlockState state, DrillBlockEntity be, Integer maxDrillStep, + List drillPosition) { + if (state.get(DrillBlock.FUEL) > 0) { + if (be.getDrillstep() < 1) { + be.setDrillstep(maxDrillStep); + if (drill(pos, drillPosition, world)) { + moveBlockWithEntity(pos, drillPosition.get(drillPosition.size() - 1), world); + } + } else { + be.doDrillstep(); } - } else { - be.doDrillstep(); } } 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 438c607..4b56ae5 100644 --- a/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockDrillDown.java +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockDrillDown.java @@ -24,12 +24,13 @@ import net.minecraft.world.World; * @author jotty * */ -public class BlockDrillDown extends FallingBlock implements BlockEntityProvider { +public class BlockDrillDown extends DrillBlock implements BlockEntityProvider { public BlockDrillDown() { super(FabricBlockSettings.create().hardness(2.5f)); } + @Override public BlockEntity createBlockEntity(BlockPos pos, BlockState blockState) { return new DrillBlockDownEntity(pos, blockState); } @@ -47,7 +48,8 @@ public class BlockDrillDown extends FallingBlock implements BlockEntityProvider } @Override - public BlockEntityTicker getTicker(World world, BlockState state, BlockEntityType type){ + public BlockEntityTicker getTicker(World world, BlockState state, + BlockEntityType type) { return (world1, pos, state1, be) -> DrillBlockDownEntity.tick(world1, pos, state1, be); } diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockDrillEast.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockDrillEast.java index 3a86e6c..7b0dfe7 100644 --- a/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockDrillEast.java +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockDrillEast.java @@ -24,7 +24,7 @@ import net.minecraft.world.World; * @author jotty * */ -public class BlockDrillEast extends FallingBlock implements BlockEntityProvider { +public class BlockDrillEast extends DrillBlock implements BlockEntityProvider { public BlockDrillEast() { super(FabricBlockSettings.create().hardness(2.5f)); diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockDrillNorth.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockDrillNorth.java index 2888201..77a233e 100644 --- a/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockDrillNorth.java +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockDrillNorth.java @@ -24,7 +24,7 @@ import net.minecraft.world.World; * @author jotty * */ -public class BlockDrillNorth extends FallingBlock implements BlockEntityProvider { +public class BlockDrillNorth extends DrillBlock implements BlockEntityProvider { public BlockDrillNorth() { super(FabricBlockSettings.create().hardness(2.5f)); diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockDrillSouth.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockDrillSouth.java index 4e48715..700d6c6 100644 --- a/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockDrillSouth.java +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockDrillSouth.java @@ -24,7 +24,7 @@ import net.minecraft.world.World; * @author jotty * */ -public class BlockDrillSouth extends FallingBlock implements BlockEntityProvider { +public class BlockDrillSouth extends DrillBlock implements BlockEntityProvider { public BlockDrillSouth() { super(FabricBlockSettings.create().hardness(2.5f)); diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockDrillWest.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockDrillWest.java index a85784c..726ceb3 100644 --- a/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockDrillWest.java +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/BlockDrillWest.java @@ -24,7 +24,7 @@ import net.minecraft.world.World; * @author jotty * */ -public class BlockDrillWest extends FallingBlock implements BlockEntityProvider { +public class BlockDrillWest extends DrillBlock implements BlockEntityProvider { public BlockDrillWest() { super(FabricBlockSettings.create().hardness(2.5f)); diff --git a/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/DrillBlock.java b/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/DrillBlock.java new file mode 100644 index 0000000..49c9644 --- /dev/null +++ b/src/main/java/de/jottyfan/minecraft/quickiefabric/blocks/DrillBlock.java @@ -0,0 +1,78 @@ +package de.jottyfan.minecraft.quickiefabric.blocks; + +import java.util.HashMap; +import java.util.Map; + +import de.jottyfan.minecraft.quickiefabric.items.QuickieItems; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.FallingBlock; +import net.minecraft.entity.ItemEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.state.property.IntProperty; +import net.minecraft.text.Text; +import net.minecraft.util.ActionResult; +import net.minecraft.util.Hand; +import net.minecraft.util.hit.BlockHitResult; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; + +/** + * + * @author jotty + * + */ +public abstract class DrillBlock extends FallingBlock { + private static final Integer MAX_FUEL = 255; + public static final IntProperty FUEL = IntProperty.of("fuel", 0, MAX_FUEL); + + public DrillBlock(Settings settings) { + super(settings); + setDefaultState(getDefaultState().with(FUEL, 0)); + } + + @Override + public BlockState onBreak(World world, BlockPos pos, BlockState state, PlayerEntity player) { + Integer fuelLeft = state.get(FUEL); + world.spawnEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.REDSTONE, fuelLeft))); + return super.onBreak(world, pos, state, player); + } + + @Override + protected void appendProperties(net.minecraft.state.StateManager.Builder builder) { + builder.add(FUEL); + } + + @Override + public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, + BlockHitResult hit) { + Map loadings = new HashMap<>(); + loadings.put(QuickieItems.SPEEDPOWDER, 8); + loadings.put(QuickieItems.QUICKIEPOWDER, 32); + loadings.put(Items.REDSTONE, 1); + loadings.put(Items.REDSTONE_BLOCK, 10); + ItemStack stack = player.getStackInHand(hand); + Item item = stack.getItem(); + if (stack.isEmpty() || !loadings.containsKey(item) ) { + if (world.isClient()) { + player.sendMessage(Text.translatable("msg.drill.fuelinfo", state.get(FUEL))); + } + } else { + Integer fuelWeight = loadings.get(item); + if (fuelWeight != null) { + Integer load = MAX_FUEL - state.get(FUEL); + if (load < fuelWeight) { + Integer numberOfTooMuchLoad = fuelWeight - load; + fuelWeight = load; + world.spawnEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.REDSTONE, numberOfTooMuchLoad))); + } + world.setBlockState(pos, state.with(FUEL, state.get(FUEL) + fuelWeight)); + stack.decrement(1); + } + } + return ActionResult.PASS; + } +} diff --git a/src/main/resources/assets/quickiefabric/lang/de_de.json b/src/main/resources/assets/quickiefabric/lang/de_de.json index 5502691..9e06277 100644 --- a/src/main/resources/assets/quickiefabric/lang/de_de.json +++ b/src/main/resources/assets/quickiefabric/lang/de_de.json @@ -101,5 +101,6 @@ "msg.backpack.transfer.filled": "Der Rucksack wurde befüllt.", "msg.backpack.transfer.cleared": "Der Rucksackinhalt wurde soweit möglich geleert.", "msg.backpack.transfer.cancel": "Entweder der Rucksack oder die Kiste sind nicht komplett leer.", + "msg.drill.fuelinfo": "Der Bohrer hat noch eine Ladung für den Abbau von %s Blöcken. Er kann mit Redstone, Flucht- oder Eilpulver aufgeladen werden.", "error.unleveling.inventory.full": "Es ist kein Platz mehr frei, um die Aufwertungen abzulegen." } diff --git a/src/main/resources/assets/quickiefabric/lang/en_us.json b/src/main/resources/assets/quickiefabric/lang/en_us.json index e76009e..367ef2a 100644 --- a/src/main/resources/assets/quickiefabric/lang/en_us.json +++ b/src/main/resources/assets/quickiefabric/lang/en_us.json @@ -101,5 +101,6 @@ "msg.backpack.transfer.filled": "Filled the backpack.", "msg.backpack.transfer.cleared": "Cleared the backpack as much as possible.", "msg.backpack.transfer.cancel": "Eigther backpack or chest are not completely empty.", + "msg.drill.fuelinfo": "The drill still has a charge for mining %s blocks. It can be charged with redstone, speed or hurry powder.", "error.unleveling.inventory.full": "There is no free stack in your inventory for the level ups." }