- 1
- 0
Пишу мод для анализа игроков через своё API на серверах, я пишу команду в одиночной игре, и всё нормально, а на серверах мод не видит ввод команды и отправляет её серверу.
Как это исправить?
Как это исправить?
Code:
package ru.zaralx.spxadmintool.client;
import com.google.gson.Gson;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback;
import net.minecraft.client.MinecraftClient;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.text.Text;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import static net.minecraft.server.command.CommandManager.literal;
public class SPXAdminToolClient implements ClientModInitializer {
List<CheckedPlayer> checkedPlayers = new ArrayList<>();
@Override
public void onInitializeClient() {
initCommands();
}
public void initCommands() {
CommandRegistrationCallback.EVENT.register((dispatcher, registryAccess, environment) -> dispatcher.register(literal("spx_update")
.executes(context -> {
checkOnlinePlayers();
return 1;
})));
CommandRegistrationCallback.EVENT.register((dispatcher, registryAccess, environment) -> dispatcher.register(literal("spx_show")
.executes(context -> {
StringBuilder ex = new StringBuilder();
for (CheckedPlayer player : checkedPlayers) {
if (player.found) {
ex.append("§a").append(player.nickname).append("§f, ");
} else {
ex.append("§c").append(player.nickname).append("§f, ");
}
}
context.getSource().sendMessage(Text.literal(ex.toString()));
return 1;
})));
}
public void checkOnlinePlayers() {
MinecraftServer server = MinecraftClient.getInstance().getServer();
if (server != null) {
Iterable<ServerPlayerEntity> players = server.getPlayerManager().getPlayerList();
for (ServerPlayerEntity player : players) {
String playerName = player.getDisplayName().getString();
boolean valid = validateUser(playerName);
if (valid) {
player.sendMessage(Text.literal("§a" + playerName), true);
} else {
player.sendMessage(Text.literal("§c" + playerName), true);
}
boolean found = false;
for (CheckedPlayer checkedPlayer : checkedPlayers) {
if (Objects.equals(checkedPlayer.nickname, playerName)) {
checkedPlayer.setFound(valid);
found = true;
break;
}
}
if (!found) {
checkedPlayers.add(new CheckedPlayer(valid, playerName));
}
}
}
}
public Boolean validateUser(String nickname) {
// Hidden
}
class ResponseData {
boolean found;
UserData userData;
}
class UserData {
String discordId;
}
class CheckedPlayer {
boolean found;
String nickname;
public CheckedPlayer(boolean found, String nickname) {
this.found = found;
this.nickname = nickname;
}
public void setFound(boolean found) {
this.found = found;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
}
}