package com.arslaancodes.arslaansmagichax.commands; import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.arguments.IntegerArgumentType; import com.mojang.brigadier.arguments.StringArgumentType; import com.mojang.brigadier.context.CommandContext; import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager; import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource; import net.minecraft.client.Minecraft; import net.minecraft.commands.CommandBuildContext; import net.minecraft.core.BlockPos; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; public class HackSetblock { public static void register(CommandDispatcher dispatcher, CommandBuildContext access) { dispatcher.register(ClientCommandManager.literal("hacksetblock") .then(ClientCommandManager.argument("block", StringArgumentType.string()) // Case: just block -> place at player's feet .executes(HackSetblock::runAtFeet) // Case: block + xyz -> place at given position .then(ClientCommandManager.argument("x", IntegerArgumentType.integer()) .then(ClientCommandManager.argument("y", IntegerArgumentType.integer()) .then(ClientCommandManager.argument("z", IntegerArgumentType.integer()) .executes(HackSetblock::runAtPos) ) ) ) ) ); } private static int runAtFeet(CommandContext context) { Minecraft client = Minecraft.getInstance(); if (client.level == null || client.player == null) return 0; String blockId = StringArgumentType.getString(context, "block"); Block block = BuiltInRegistries.BLOCK.getValue(ResourceLocation.parse(blockId)); if (block == null) { context.getSource().sendError(Component.literal("Unknown block: " + blockId)); return 0; } BlockPos pos = client.player.blockPosition(); BlockState blockState = block.defaultBlockState(); client.level.setBlockAndUpdate(pos, blockState); return 1; } private static int runAtPos(CommandContext context) { Minecraft client = Minecraft.getInstance(); if (client.level == null) return 0; String blockId = StringArgumentType.getString(context, "block"); int x = IntegerArgumentType.getInteger(context, "x"); int y = IntegerArgumentType.getInteger(context, "y"); int z = IntegerArgumentType.getInteger(context, "z"); Block block = BuiltInRegistries.BLOCK.getValue(ResourceLocation.parse(blockId)); if (block == null) { context.getSource().sendError(Component.literal("Unknown block: " + blockId)); return 0; } BlockPos pos = new BlockPos(x, y, z); BlockState blockState = block.defaultBlockState(); client.level.setBlockAndUpdate(pos, blockState); return 1; } }