Fabric Mod

CrystalLoopMod

ich möchte eine mod die mit einem auswählbarem keybind 1 obsidian und plaziert 1 mal crystal plazieren 1 mal abbauen . 1 mal plazieren 1 mal abbauen. das alles mit einstellbarem delay

src/main/java/eu/codexe/crystalloopmod/loop/BlockActions.java
package eu.codexe.crystalloopmod.loop;

import net.minecraft.block.BlockState;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.network.ClientPlayerEntity;
import net.minecraft.client.network.ClientPlayerInteractionManager;
import net.minecraft.item.Item;
import net.minecraft.item.Items;
import net.minecraft.util.Hand;
import net.minecraft.util.hit.BlockHitResult;
import net.minecraft.util.math.BlockPos;

public final class BlockActions {
    private BlockActions() {
    }

    public static boolean placeBlock(MinecraftClient client, Item item) {
        if (client == null || client.player == null || client.interactionManager == null || client.crosshairTarget == null) {
            return false;
        }

        if (!(client.crosshairTarget instanceof BlockHitResult hit)) {
            return false;
        }

        if (item != Items.OBSIDIAN) {
            return false;
        }

        ClientPlayerEntity player = client.player;
        int slot = InventoryUtil.findHotbarItem(player, item);
        if (slot < 0) {
            return false;
        }

        return useHotbarItemOnTarget(client.interactionManager, player, slot, hit);
    }

    public static boolean placeCrystal(MinecraftClient client) {
        if (client == null || client.player == null || client.interactionManager == null || client.crosshairTarget == null) {
            return false;
        }

        if (!(client.crosshairTarget instanceof BlockHitResult hit)) {
            return false;
        }

        ClientPlayerEntity player = client.player;
        int slot = InventoryUtil.findHotbarItem(player, Items.END_CRYSTAL);
        if (slot < 0) {
            return false;
        }

        return useHotbarItemOnTarget(client.interactionManager, player, slot, hit);
    }

    public static boolean breakTargetBlock(MinecraftClient client) {
        if (client == null || client.player == null || client.interactionManager == null || client.crosshairTarget == null || client.world == null) {
            return false;
        }