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;
}