Enums
Entity anchor argument
Section titled “Entity anchor argument”The entity anchor argument has two valid inputs: feet and eyes. The resulting LookAnchor is mainly used for methods like
Entity#lookAt(Position, LookAnchor) or
Player#lookAt(Entity, LookAnchor, LookAnchor).
Example usage
Section titled “Example usage”public static LiteralCommandNode<CommandSourceStack> entityAnchorArgument() { return Commands.literal("entityanchor") .then(Commands.argument("arg", ArgumentTypes.entityAnchor()) .executes(ctx -> { final LookAnchor lookAnchor = ctx.getArgument("arg", LookAnchor.class);
ctx.getSource().getSender().sendRichMessage("You chose <aqua><anchor></aqua>!", Placeholder.unparsed("anchor", lookAnchor.name()) ); return Command.SINGLE_SUCCESS; })) .build();}In-game preview
Section titled “In-game preview”GameMode argument
Section titled “GameMode argument”The game mode argument works the same way as the first argument of the Vanilla /gamemode <gamemode> command. It accepts any of the 4 valid game modes, returning
a GameMode enum to use in code.
Example usage
Section titled “Example usage”public static LiteralCommandNode<CommandSourceStack> gameModeArgument() { return Commands.literal("gamemodearg") .then(Commands.argument("arg", ArgumentTypes.gameMode()) .executes(ctx -> { final GameMode gamemode = ctx.getArgument("arg", GameMode.class);
if (ctx.getSource().getExecutor() instanceof Player player) { player.setGameMode(gamemode); player.sendRichMessage("Your gamemode has been set to <red><gamemode></red>!", Placeholder.component("gamemode", Component.translatable(gamemode)) ); return Command.SINGLE_SUCCESS; }
ctx.getSource().getSender().sendPlainMessage("This command requires a player!"); return Command.SINGLE_SUCCESS; })) .build();}In-game preview
Section titled “In-game preview”HeightMap argument
Section titled “HeightMap argument”The HeightMap argument consists of the following, valid inputs: motion_blocking, motion_blocking_no_leaves, ocean_floor, and world_surface. It is often
used for declaring relative positioning for data packs or the /execute positioned over <height_map> command. E.g. world_surface
would mean that the Y coordinate of the surface of the world on the set X/Z values should be used.
Example usage
Section titled “Example usage”public static LiteralCommandNode<CommandSourceStack> heightMapArgument() { return Commands.literal("heightmap") .then(Commands.argument("arg", ArgumentTypes.heightMap()) .executes(ctx -> { final HeightMap heightMap = ctx.getArgument("arg", HeightMap.class);
ctx.getSource().getSender().sendRichMessage("You selected <gold><selection></gold>", Placeholder.unparsed("selection", heightMap.name()) );
return Command.SINGLE_SUCCESS; })) .build();}In-game preview
Section titled “In-game preview”Scoreboard display slot argument
Section titled “Scoreboard display slot argument”This argument allows you to retrieve a DisplaySlot enum value from the user.
Example usage
Section titled “Example usage”public static LiteralCommandNode<CommandSourceStack> scoreboardDisplaySlotArgument() { return Commands.literal("scoreboarddisplayslot") .then(Commands.argument("slot", ArgumentTypes.scoreboardDisplaySlot()) .executes(ctx -> { final DisplaySlot slot = ctx.getArgument("slot", DisplaySlot.class);
ctx.getSource().getSender().sendPlainMessage("You selected: " + slot.getId());
return Command.SINGLE_SUCCESS; }) ).build();}In-game preview
Section titled “In-game preview”Template mirror argument
Section titled “Template mirror argument”Here, the user has 3 valid input possibilities: front_back, left_right, and none. You can retrieve the result of
the argument as a Mirror enum value.
Example usage
Section titled “Example usage”public static LiteralCommandNode<CommandSourceStack> templateMirrorArgument() { return Commands.literal("templatemirror") .then(Commands.argument("mirror", ArgumentTypes.templateMirror()) .executes(ctx -> { final Mirror mirror = ctx.getArgument("mirror", Mirror.class);
ctx.getSource().getSender().sendPlainMessage("You selected: " + mirror.name());
return Command.SINGLE_SUCCESS; }) ).build();}In-game preview
Section titled “In-game preview”Template rotation argument
Section titled “Template rotation argument”For the template rotation argument, the user has 4 valid input possibilities: 180, clockwise_90, counterclockwise_90, and none. You can retrieve the result
of the argument as a StructureRotation enum value.
Example usage
Section titled “Example usage”public static LiteralCommandNode<CommandSourceStack> templateRotationArgument() { return Commands.literal("templaterotation") .then(Commands.argument("rotation", ArgumentTypes.templateRotation()) .executes(ctx -> { final StructureRotation rotation = ctx.getArgument("rotation", StructureRotation.class);
ctx.getSource().getSender().sendPlainMessage("You selected: " + rotation.name());
return Command.SINGLE_SUCCESS; }) ).build();}