diff --git a/src/main/java/ru/bclib/api/ShovelAPI.java b/src/main/java/ru/bclib/api/ShovelAPI.java new file mode 100644 index 00000000..488d16cd --- /dev/null +++ b/src/main/java/ru/bclib/api/ShovelAPI.java @@ -0,0 +1,20 @@ +package ru.bclib.api; + +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import ru.bclib.mixin.common.ShovelItemAccessor; + +import java.util.Map; + +public class ShovelAPI { + /** + * Will add left-click behaviour to shovel: when it is targeting cetrain {@link Block} it will be converting to new + * {@link BlockState} on usage. Example: grass converting to path. + * @param target {@link Block} that will be converted. + * @param convert {@link BlockState} to convert block into. + */ + public static void addShovelBehaviour(Block target, BlockState convert) { + Map map = ShovelItemAccessor.bclib_getFlattenables(); + map.put(target, convert); + } +} diff --git a/src/main/java/ru/bclib/mixin/common/ShovelItemAccessor.java b/src/main/java/ru/bclib/mixin/common/ShovelItemAccessor.java new file mode 100644 index 00000000..8103ba3f --- /dev/null +++ b/src/main/java/ru/bclib/mixin/common/ShovelItemAccessor.java @@ -0,0 +1,17 @@ +package ru.bclib.mixin.common; + +import net.minecraft.world.item.ShovelItem; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +import java.util.Map; + +@Mixin(ShovelItem.class) +public interface ShovelItemAccessor { + @Accessor("FLATTENABLES") + static Map bclib_getFlattenables() { + throw new AssertionError("@Accessor dummy body called"); + } +} diff --git a/src/main/resources/bclib.mixins.common.json b/src/main/resources/bclib.mixins.common.json index 5c9565c3..96dc7784 100644 --- a/src/main/resources/bclib.mixins.common.json +++ b/src/main/resources/bclib.mixins.common.json @@ -32,6 +32,7 @@ "DimensionTypeMixin", "RecipeManagerMixin", "RecipeManagerMixin", + "ShovelItemAccessor", "BoneMealItemMixin", "CraftingMenuMixin", "shears.SheepMixin", @@ -39,6 +40,7 @@ "ServerLevelMixin", "BiomeSourceMixin", "AnvilBlockMixin", + "HoeItemAccessor", "AnvilMenuMixin", "TagLoaderMixin", "MainMixin"