-
Автор темы
- #1
создаем класс ParseCommand вот тута im.expensive.command.impl.feature
и вставляем этот код
дальше заходим в Expensive.java и на 242 строчке вставляем это -
Вот и все! парсер готов!
( ес че это штука собирает все ники с таба, годная хуйня )
и вставляем этот код
Java:
package im.expensive.command.impl.feature;
import im.expensive.command.Command;
import im.expensive.command.Parameters;
import im.expensive.command.Prefix;
import im.expensive.command.Logger;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
import lombok.experimental.FieldDefaults;
import net.minecraft.client.Minecraft;
import net.minecraft.client.network.play.ClientPlayNetHandler;
import net.minecraft.scoreboard.ScorePlayerTeam;
import net.minecraft.util.text.TextFormatting;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.*;
@RequiredArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class ParseCommand implements Command {
final Prefix prefix;
final Logger logger;
@Override
public void execute(Parameters parameters) {
savePlayerData();
}
@Override
public String name() {
return "parse";
}
@Override
public String description() {
return "Парсит игроков из таба. (В папку 'expensive/files')";
}
public List<String> adviceMessage() {
String commandPrefix = prefix.get();
return List.of(commandPrefix + name() + " - Сохранить ники игроков из таба в файл");
}
private void savePlayerData() {
File directory = new File("expensive/files");
if (!directory.exists()) {
directory.mkdirs();
}
File file = new File(directory, "players.txt");
Map<String, List<String>> prefixToPlayers = new LinkedHashMap<>();
try (BufferedWriter writer = new BufferedWriter(new FileWriter(file))) {
Minecraft minecraft = Minecraft.getInstance();
ClientPlayNetHandler networkHandler = minecraft.getConnection();
if (networkHandler != null) {
networkHandler.getPlayerInfoMap().forEach(playerInfo -> {
String playerName = playerInfo.getGameProfile().getName();
String playerPrefix = getPlayerPrefix(playerName);
prefixToPlayers
.computeIfAbsent(playerPrefix, k -> new ArrayList<>())
.add(playerName);
});
for (Map.Entry<String, List<String>> entry : prefixToPlayers.entrySet()) {
String prefix = entry.getKey();
List<String> players = entry.getValue();
if (!prefix.isEmpty()) {
writer.write(prefix);
writer.newLine();
}
for (String player : players) {
writer.write(" " + player);
writer.newLine();
}
writer.newLine();
}
}
String relativePath = "expensive/files/players.txt";
logger.log(TextFormatting.GREEN + "Информация о игроках успешно сохранена в " + relativePath);
} catch (IOException e) {
logger.log(TextFormatting.RED + "Ошибка при сохранении информации о игроках: " + e.getMessage());
}
}
private String getPlayerPrefix(String playerName) {
Minecraft minecraft = Minecraft.getInstance();
ClientPlayNetHandler networkHandler = minecraft.getConnection();
if (networkHandler != null) {
for (ScorePlayerTeam team : minecraft.world.getScoreboard().getTeams()) {
if (team.getMembershipCollection().contains(playerName)) {
return team.getPrefix().getString();
}
}
}
return "";
}
}
Java:
commands.add(new ParseCommand(prefix, logger));
( ес че это штука собирает все ники с таба, годная хуйня )
Последнее редактирование модератором: