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

77 lines
3.9 KiB
Java

package net.minecraft.server.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 com.mojang.brigadier.exceptions.CommandSyntaxException;
import com.mojang.brigadier.exceptions.SimpleCommandExceptionType;
import java.util.Collection;
import java.util.List;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.minecraft.commands.arguments.EntityArgument;
import net.minecraft.network.chat.Component;
import net.minecraft.network.protocol.common.ClientboundTransferPacket;
import net.minecraft.server.level.ServerPlayer;
public class TransferCommand {
private static final SimpleCommandExceptionType ERROR_NO_PLAYERS = new SimpleCommandExceptionType(Component.translatable("commands.transfer.error.no_players"));
public static void register(CommandDispatcher<CommandSourceStack> p_331355_) {
p_331355_.register(
Commands.literal("transfer")
.requires(p_335927_ -> p_335927_.hasPermission(3))
.then(
Commands.argument("hostname", StringArgumentType.string())
.executes(
p_328093_ -> transfer(
p_328093_.getSource(), StringArgumentType.getString(p_328093_, "hostname"), 25565, List.of(p_328093_.getSource().getPlayerOrException())
)
)
.then(
Commands.argument("port", IntegerArgumentType.integer(1, 65535))
.executes(
p_331985_ -> transfer(
p_331985_.getSource(),
StringArgumentType.getString(p_331985_, "hostname"),
IntegerArgumentType.getInteger(p_331985_, "port"),
List.of(p_331985_.getSource().getPlayerOrException())
)
)
.then(
Commands.argument("players", EntityArgument.players())
.executes(
p_327688_ -> transfer(
p_327688_.getSource(),
StringArgumentType.getString(p_327688_, "hostname"),
IntegerArgumentType.getInteger(p_327688_, "port"),
EntityArgument.getPlayers(p_327688_, "players")
)
)
)
)
)
);
}
private static int transfer(CommandSourceStack p_328615_, String p_328133_, int p_328113_, Collection<ServerPlayer> p_331356_) throws CommandSyntaxException {
if (p_331356_.isEmpty()) {
throw ERROR_NO_PLAYERS.create();
} else {
for (ServerPlayer serverplayer : p_331356_) {
serverplayer.connection.send(new ClientboundTransferPacket(p_328133_, p_328113_));
}
if (p_331356_.size() == 1) {
p_328615_.sendSuccess(
() -> Component.translatable("commands.transfer.success.single", p_331356_.iterator().next().getDisplayName(), p_328133_, p_328113_), true
);
} else {
p_328615_.sendSuccess(() -> Component.translatable("commands.transfer.success.multiple", p_331356_.size(), p_328133_, p_328113_), true);
}
return p_331356_.size();
}
}
}