Code/net/minecraft/server/commands/SetWorldSpawnCommand.java

49 lines
2.3 KiB
Java

package net.minecraft.server.commands;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.context.CommandContext;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.minecraft.commands.arguments.AngleArgument;
import net.minecraft.commands.arguments.coordinates.BlockPosArgument;
import net.minecraft.core.BlockPos;
import net.minecraft.network.chat.Component;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.level.Level;
public class SetWorldSpawnCommand {
public static void register(CommandDispatcher<CommandSourceStack> p_138661_) {
p_138661_.register(
Commands.literal("setworldspawn")
.requires(p_138665_ -> p_138665_.hasPermission(2))
.executes(p_274830_ -> setSpawn(p_274830_.getSource(), BlockPos.containing(p_274830_.getSource().getPosition()), 0.0F))
.then(
Commands.argument("pos", BlockPosArgument.blockPos())
.executes(p_138671_ -> setSpawn(p_138671_.getSource(), BlockPosArgument.getSpawnablePos(p_138671_, "pos"), 0.0F))
.then(
Commands.argument("angle", AngleArgument.angle())
.executes(
p_138663_ -> setSpawn(
p_138663_.getSource(), BlockPosArgument.getSpawnablePos(p_138663_, "pos"), AngleArgument.getAngle(p_138663_, "angle")
)
)
)
)
);
}
private static int setSpawn(CommandSourceStack p_138667_, BlockPos p_138668_, float p_138669_) {
ServerLevel serverlevel = p_138667_.getLevel();
if (serverlevel.dimension() != Level.OVERWORLD) {
p_138667_.sendFailure(Component.translatable("commands.setworldspawn.failure.not_overworld"));
return 0;
} else {
serverlevel.setDefaultSpawnPos(p_138668_, p_138669_);
p_138667_.sendSuccess(
() -> Component.translatable("commands.setworldspawn.success", p_138668_.getX(), p_138668_.getY(), p_138668_.getZ(), p_138669_),
true
);
return 1;
}
}
}