Spaces:
Build error
Build error
package net.minecraft.server.commands; | |
import com.mojang.brigadier.CommandDispatcher; | |
import com.mojang.brigadier.arguments.BoolArgumentType; | |
import com.mojang.brigadier.arguments.IntegerArgumentType; | |
import com.mojang.brigadier.context.CommandContext; | |
import com.mojang.brigadier.exceptions.CommandSyntaxException; | |
import com.mojang.brigadier.exceptions.DynamicCommandExceptionType; | |
import com.mojang.brigadier.exceptions.SimpleCommandExceptionType; | |
import javax.annotation.Nullable; | |
import net.minecraft.commands.CommandSourceStack; | |
import net.minecraft.commands.Commands; | |
import net.minecraft.commands.arguments.GameModeArgument; | |
import net.minecraft.network.chat.Component; | |
import net.minecraft.network.chat.ComponentUtils; | |
import net.minecraft.network.chat.MutableComponent; | |
import net.minecraft.util.HttpUtil; | |
import net.minecraft.world.level.GameType; | |
public class PublishCommand { | |
private static final SimpleCommandExceptionType ERROR_FAILED = new SimpleCommandExceptionType(Component.translatable("commands.publish.failed")); | |
private static final DynamicCommandExceptionType ERROR_ALREADY_PUBLISHED = new DynamicCommandExceptionType( | |
p_308792_ -> Component.translatableEscape("commands.publish.alreadyPublished", p_308792_) | |
); | |
public static void register(CommandDispatcher<CommandSourceStack> p_138185_) { | |
p_138185_.register( | |
Commands.literal("publish") | |
.requires(p_138189_ -> p_138189_.hasPermission(4)) | |
.executes(p_258235_ -> publish(p_258235_.getSource(), HttpUtil.getAvailablePort(), false, null)) | |
.then( | |
Commands.argument("allowCommands", BoolArgumentType.bool()) | |
.executes( | |
p_258236_ -> publish(p_258236_.getSource(), HttpUtil.getAvailablePort(), BoolArgumentType.getBool(p_258236_, "allowCommands"), null) | |
) | |
.then( | |
Commands.argument("gamemode", GameModeArgument.gameMode()) | |
.executes( | |
p_258237_ -> publish( | |
p_258237_.getSource(), | |
HttpUtil.getAvailablePort(), | |
BoolArgumentType.getBool(p_258237_, "allowCommands"), | |
GameModeArgument.getGameMode(p_258237_, "gamemode") | |
) | |
) | |
.then( | |
Commands.argument("port", IntegerArgumentType.integer(0, 65535)) | |
.executes( | |
p_258238_ -> publish( | |
p_258238_.getSource(), | |
IntegerArgumentType.getInteger(p_258238_, "port"), | |
BoolArgumentType.getBool(p_258238_, "allowCommands"), | |
GameModeArgument.getGameMode(p_258238_, "gamemode") | |
) | |
) | |
) | |
) | |
) | |
); | |
} | |
private static int publish(CommandSourceStack p_260117_, int p_259411_, boolean p_260137_, GameType p_259145_) throws CommandSyntaxException { | |
if (p_260117_.getServer().isPublished()) { | |
throw ERROR_ALREADY_PUBLISHED.create(p_260117_.getServer().getPort()); | |
} else if (!p_260117_.getServer().publishServer(p_259145_, p_260137_, p_259411_)) { | |
throw ERROR_FAILED.create(); | |
} else { | |
p_260117_.sendSuccess(() -> getSuccessMessage(p_259411_), true); | |
return p_259411_; | |
} | |
} | |
public static MutableComponent getSuccessMessage(int p_259532_) { | |
Component component = ComponentUtils.copyOnClickText(String.valueOf(p_259532_)); | |
return Component.translatable("commands.publish.started", component); | |
} | |
} |