diff --git a/src/main/java/net/minecraftforge/common/ForgeHooks.java b/src/main/java/net/minecraftforge/common/ForgeHooks.java index bc8eac4a2..910859665 100644 --- a/src/main/java/net/minecraftforge/common/ForgeHooks.java +++ b/src/main/java/net/minecraftforge/common/ForgeHooks.java @@ -45,6 +45,7 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; import net.minecraft.advancements.Advancement; import net.minecraft.block.Block; +import net.minecraft.block.material.Material; import net.minecraft.fluid.*; import net.minecraft.loot.LootContext; import net.minecraft.loot.LootTable; @@ -213,7 +214,11 @@ public class ForgeHooks blocks.forEach(block -> blockToolSetter.accept(block, ToolType.PICKAXE, 0)); blocks = getPrivateValue(ShovelItem.class, null, 0); blocks.forEach(block -> blockToolSetter.accept(block, ToolType.SHOVEL, 0)); - //TODO Axes check Material and Blocks now. + //Axes check Materials and Blocks now. + Set materials = getPrivateValue(AxeItem.class, null, 0); + for (Block block : ForgeRegistries.BLOCKS) + if (materials.contains(block.getDefaultState().getMaterial())) + blockToolSetter.accept(block, ToolType.AXE, 0); blocks = getPrivateValue(AxeItem.class, null, 1); blocks.forEach(block -> blockToolSetter.accept(block, ToolType.AXE, 0)); blocks = getPrivateValue(HoeItem.class, null, 0); diff --git a/src/test/java/net/minecraftforge/debug/block/HarvestToolTest.java b/src/test/java/net/minecraftforge/debug/block/HarvestToolTest.java new file mode 100644 index 000000000..b9aa657d1 --- /dev/null +++ b/src/test/java/net/minecraftforge/debug/block/HarvestToolTest.java @@ -0,0 +1,46 @@ +/* + * Minecraft Forge + * Copyright (c) 2016-2020. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation version 2.1 + * of the License. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +package net.minecraftforge.debug.block; + +import net.minecraft.block.BlockState; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.util.text.StringTextComponent; +import net.minecraftforge.common.ToolType; +import net.minecraftforge.event.world.BlockEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; + +@Mod("block_harvest_tool_test") +@Mod.EventBusSubscriber +public class HarvestToolTest +{ + @SubscribeEvent + public static void onBlockBreak(BlockEvent.BreakEvent event) + { + PlayerEntity player = event.getPlayer(); + BlockState state = event.getState(); + for (ToolType toolType : player.getHeldItemMainhand().getToolTypes()) { + if (state.isToolEffective(toolType)) { + player.sendMessage(new StringTextComponent(String.format("Tool was effective. tool type: %s | harvest level: %d", toolType.getName(), state.getHarvestLevel())), player.getUniqueID()); + break; + } + } + } +} diff --git a/src/test/resources/META-INF/mods.toml b/src/test/resources/META-INF/mods.toml index 64530c611..b65b59997 100644 --- a/src/test/resources/META-INF/mods.toml +++ b/src/test/resources/META-INF/mods.toml @@ -18,6 +18,8 @@ license="LGPL v2.1" modId="slipperiness_test" [[mods]] modId="custom_slime_block_test" +[[mods]] + modId="block_harvest_tool_test" [[mods]] modId="client_chat_event_test" [[mods]]