From ad72c013dfa2a851f158edbad85685c7431adb62 Mon Sep 17 00:00:00 2001 From: Moritz Zwerger Date: Tue, 29 Oct 2024 23:12:07 +0100 Subject: [PATCH] fix plank tests --- .../interaction/breaking/BreakHandlerTest.kt | 17 +++++++++-------- .../registries/blocks/types/wood/PlanksBlock.kt | 3 ++- .../properties/requirement/HandBreakable.kt | 16 ++++++++++++++++ .../breaking/survival/SurvivalDigger.kt | 3 ++- 4 files changed, 29 insertions(+), 10 deletions(-) create mode 100644 src/main/java/de/bixilon/minosoft/data/registries/item/items/tool/properties/requirement/HandBreakable.kt diff --git a/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/breaking/BreakHandlerTest.kt b/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/breaking/BreakHandlerTest.kt index 5cde5c158..59fc8f1d5 100644 --- a/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/breaking/BreakHandlerTest.kt +++ b/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/breaking/BreakHandlerTest.kt @@ -31,6 +31,7 @@ import de.bixilon.minosoft.data.registries.blocks.state.BlockState import de.bixilon.minosoft.data.registries.blocks.types.building.WoolBlock import de.bixilon.minosoft.data.registries.blocks.types.building.stone.StoneBlock import de.bixilon.minosoft.data.registries.blocks.types.pvp.CobwebBlock +import de.bixilon.minosoft.data.registries.blocks.types.wood.Oak import de.bixilon.minosoft.data.registries.effects.mining.MiningEffect import de.bixilon.minosoft.data.registries.enchantment.armor.ArmorEnchantment import de.bixilon.minosoft.data.registries.enchantment.tool.MiningEnchantment @@ -164,35 +165,35 @@ class BreakHandlerTest { fun nothingPlanks() { - breakBlock(MinecraftBlocks.OAK_PLANKS, ticks = 62)!!.assert(productivity = BlockBreakProductivity.INEFFECTIVE) + breakBlock(Oak.Planks.identifier, ticks = 62)!!.assert(productivity = BlockBreakProductivity.INEFFECTIVE) } fun pickaxePlanks() { - breakBlock(MinecraftBlocks.OAK_PLANKS, WoodenTool.WoodenPickaxe, ticks = 62)!!.assert(productivity = BlockBreakProductivity.INEFFECTIVE) + breakBlock(Oak.Planks.identifier, WoodenTool.WoodenPickaxe, ticks = 62)!!.assert(productivity = BlockBreakProductivity.INEFFECTIVE) } fun woodenAxePlanks() { - breakBlock(MinecraftBlocks.OAK_PLANKS, WoodenTool.WoodenAxe, ticks = 31)!!.assert(productivity = BlockBreakProductivity.EFFECTIVE) + breakBlock(Oak.Planks.identifier, WoodenTool.WoodenAxe, ticks = 31)!!.assert(productivity = BlockBreakProductivity.EFFECTIVE) } fun stoneAxePlanks() { - breakBlock(MinecraftBlocks.OAK_PLANKS, StoneTool.StoneAxe, ticks = 16)!!.assert(productivity = BlockBreakProductivity.EFFECTIVE) + breakBlock(Oak.Planks.identifier, StoneTool.StoneAxe, ticks = 16)!!.assert(productivity = BlockBreakProductivity.EFFECTIVE) } fun ironAxePlanks() { - breakBlock(MinecraftBlocks.OAK_PLANKS, IronTool.IronAxe, ticks = 11)!!.assert(productivity = BlockBreakProductivity.EFFECTIVE) + breakBlock(Oak.Planks.identifier, IronTool.IronAxe, ticks = 11)!!.assert(productivity = BlockBreakProductivity.EFFECTIVE) } fun diamondAxePlanks() { - breakBlock(MinecraftBlocks.OAK_PLANKS, DiamondTool.DiamondAxe, ticks = 9)!!.assert(productivity = BlockBreakProductivity.EFFECTIVE) + breakBlock(Oak.Planks.identifier, DiamondTool.DiamondAxe, ticks = 9)!!.assert(productivity = BlockBreakProductivity.EFFECTIVE) } fun netheriteAxePlanks() { - breakBlock(MinecraftBlocks.OAK_PLANKS, NetheriteTool.NetheriteAxe, ticks = 8)!!.assert(productivity = BlockBreakProductivity.EFFECTIVE) + breakBlock(Oak.Planks.identifier, NetheriteTool.NetheriteAxe, ticks = 8)!!.assert(productivity = BlockBreakProductivity.EFFECTIVE) } fun goldenAxePlanks() { - breakBlock(MinecraftBlocks.OAK_PLANKS, GoldenTool.GoldenAxe, ticks = 6)!!.assert(productivity = BlockBreakProductivity.EFFECTIVE) + breakBlock(Oak.Planks.identifier, GoldenTool.GoldenAxe, ticks = 6)!!.assert(productivity = BlockBreakProductivity.EFFECTIVE) } fun nothingEndStone() { diff --git a/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/wood/PlanksBlock.kt b/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/wood/PlanksBlock.kt index e68355c9b..237269209 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/wood/PlanksBlock.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/wood/PlanksBlock.kt @@ -23,9 +23,10 @@ import de.bixilon.minosoft.data.registries.blocks.types.properties.shape.special import de.bixilon.minosoft.data.registries.identified.ResourceLocation import de.bixilon.minosoft.data.registries.item.items.Item import de.bixilon.minosoft.data.registries.item.items.tool.axe.AxeRequirement +import de.bixilon.minosoft.data.registries.item.items.tool.properties.requirement.HandBreakable import de.bixilon.minosoft.protocol.versions.Version -abstract class PlanksBlock(identifier: ResourceLocation, settings: BlockSettings) : Block(identifier, settings), FullOpaqueBlock, BlockStateBuilder, AxeRequirement, BlockWithItem { +abstract class PlanksBlock(identifier: ResourceLocation, settings: BlockSettings) : Block(identifier, settings), FullOpaqueBlock, BlockStateBuilder, AxeRequirement, HandBreakable, BlockWithItem { override val hardness get() = 2.0f override val item: Item = this::item.inject(identifier) diff --git a/src/main/java/de/bixilon/minosoft/data/registries/item/items/tool/properties/requirement/HandBreakable.kt b/src/main/java/de/bixilon/minosoft/data/registries/item/items/tool/properties/requirement/HandBreakable.kt new file mode 100644 index 000000000..407c0d649 --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/data/registries/item/items/tool/properties/requirement/HandBreakable.kt @@ -0,0 +1,16 @@ +/* + * Minosoft + * Copyright (C) 2020-2024 Moritz Zwerger + * + * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program. If not, see . + * + * This software is not affiliated with Mojang AB, the original developer of Minecraft. + */ + +package de.bixilon.minosoft.data.registries.item.items.tool.properties.requirement + +interface HandBreakable diff --git a/src/main/java/de/bixilon/minosoft/input/interaction/breaking/survival/SurvivalDigger.kt b/src/main/java/de/bixilon/minosoft/input/interaction/breaking/survival/SurvivalDigger.kt index 1487fe2c7..2ce363bd9 100644 --- a/src/main/java/de/bixilon/minosoft/input/interaction/breaking/survival/SurvivalDigger.kt +++ b/src/main/java/de/bixilon/minosoft/input/interaction/breaking/survival/SurvivalDigger.kt @@ -23,6 +23,7 @@ import de.bixilon.minosoft.data.registries.enchantment.armor.ArmorEnchantment import de.bixilon.minosoft.data.registries.enchantment.tool.MiningEnchantment import de.bixilon.minosoft.data.registries.fluid.fluids.WaterFluid import de.bixilon.minosoft.data.registries.item.items.tool.MiningTool +import de.bixilon.minosoft.data.registries.item.items.tool.properties.requirement.HandBreakable import de.bixilon.minosoft.data.registries.item.items.tool.properties.requirement.ToolRequirement import de.bixilon.minosoft.input.interaction.breaking.BreakHandler import de.bixilon.minosoft.protocol.packets.c2s.play.entity.player.PlayerActionC2SP @@ -63,7 +64,7 @@ class SurvivalDigger( var speed = 1.0f var toolSpeed = 1.0f val block = target.state.block - val toolRequired = if (block is PixLyzerBlock) block.requiresTool else block is ToolRequirement + val toolRequired = if (block is PixLyzerBlock) block.requiresTool else (block is ToolRequirement && block !is HandBreakable) var isBestTool = !toolRequired if (stack != null && stack.item.item is MiningTool) {