diff options
| author | Arslaan Pathan <[email protected]> | 2026-09-26 17:05:36 +1200 |
|---|---|---|
| committer | Arslaan Pathan <[email protected]> | 2026-09-26 17:05:36 +1200 |
| commit | 14c68eb5ba16774f581d95a39e64a7b303954ffc (patch) | |
| tree | 2888ef11f47c6a639d440300ef580c247ad1bcb1 /src/main/java/com/arslaancodes/arslaansmagichax/commands/HackSetblock.java | |
| parent | 766ba1c1d977442332cadaaeca93d795baa559df (diff) | |
| download | arslaansmagichax-14c68eb5ba16774f581d95a39e64a7b303954ffc.tar.xz arslaansmagichax-14c68eb5ba16774f581d95a39e64a7b303954ffc.zip | |
migration to 26.2 - run migrateMappings with old loom then bring it back to new
Diffstat (limited to 'src/main/java/com/arslaancodes/arslaansmagichax/commands/HackSetblock.java')
| -rw-r--r-- | src/main/java/com/arslaancodes/arslaansmagichax/commands/HackSetblock.java | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/src/main/java/com/arslaancodes/arslaansmagichax/commands/HackSetblock.java b/src/main/java/com/arslaancodes/arslaansmagichax/commands/HackSetblock.java new file mode 100644 index 0000000..a26d0e9 --- /dev/null +++ b/src/main/java/com/arslaancodes/arslaansmagichax/commands/HackSetblock.java @@ -0,0 +1,78 @@ +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<FabricClientCommandSource> 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<FabricClientCommandSource> 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<FabricClientCommandSource> 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; + } +} |
