- Выберите загрузчик игры
- OptiFine
Не знаю кому это надо но держите.
Это функция в экспе, а точнее команда .search с помощью неё можно узнать координаты любого игрока с любого расстояния.
.search (ник) - поиск координат игрока по нику
.search near (количество игроков) - ищет самых ближайших игроков к вам
В близи с игроком работает, а из далека не проверял.
Есть гпт код.
тутор:
1. Создаём по этому пути - im/expensive/command/impl/feature/ файл SearchCommand.java
2. Вставляем код
3. Запускаем клиент
Это мой первый пост с функцией, не судите строго
Если не работает из далека не бейте палками
Это функция в экспе, а точнее команда .search с помощью неё можно узнать координаты любого игрока с любого расстояния.
.search (ник) - поиск координат игрока по нику
.search near (количество игроков) - ищет самых ближайших игроков к вам
В близи с игроком работает, а из далека не проверял.
Есть гпт код.
тутор:
1. Создаём по этому пути - im/expensive/command/impl/feature/ файл SearchCommand.java
2. Вставляем код
3. Запускаем клиент
Это мой первый пост с функцией, не судите строго
pasta expi:
package im.expensive.command.impl.feature;
import im.expensive.command.Command;
import im.expensive.command.CommandWithAdvice;
import im.expensive.command.Parameters;
import im.expensive.command.Prefix;
import im.expensive.command.Logger;
import im.expensive.command.impl.CommandException;
import im.expensive.utils.client.IMinecraft;
import net.minecraft.client.network.play.NetworkPlayerInfo;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.util.text.TextFormatting;
import java.awt.Toolkit;
import java.awt.datatransfer.StringSelection;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.UUID;
import java.util.stream.Collectors;
public class SearchCommand implements Command, CommandWithAdvice, IMinecraft {
private final Prefix prefix;
private final Logger logger;
private static final Map<String, Map<Integer, String>> serverCopyData = new HashMap<>();
private static final Map<String, Map<UUID, Integer>> serverPlayerIDs = new HashMap<>();
private static final Random random = new Random();
public SearchCommand(Prefix prefix, Logger logger) {
this.prefix = prefix;
this.logger = logger;
}
private String getServerKey() {
if (mc.getCurrentServerData() != null)
return mc.getCurrentServerData().serverIP;
return "singleplayer";
}
private int generateUniqueId(String server) {
serverCopyData.putIfAbsent(server, new HashMap<>());
int id;
do {
id = 10000 + random.nextInt(90000); // 10000..99999
} while (serverCopyData.get(server).containsKey(id));
return id;
}
private int getOrCreatePlayerID(String server, PlayerEntity player) {
serverPlayerIDs.putIfAbsent(server, new HashMap<>());
Map<UUID, Integer> ids = serverPlayerIDs.get(server);
UUID uuid = player.getUniqueID();
if (ids.containsKey(uuid))
return ids.get(uuid);
int newId = generateUniqueId(server);
ids.put(uuid, newId);
return newId;
}
@Override
public void execute(Parameters parameters) {
if (mc.player == null || mc.world == null) {
logger.log(TextFormatting.RED + "Вы должны быть в игре!");
return;
}
String server = getServerKey();
serverCopyData.putIfAbsent(server, new HashMap<>());
Map<Integer, String> copyData = serverCopyData.get(server);
if (parameters.asString(0).isPresent() && parameters.asString(0).get().equalsIgnoreCase("copy")) {
int id = parameters.asInt(1).orElse(-1);
if (copyData.containsKey(id)) {
String coords = copyData.get(id);
try {
StringSelection selection = new StringSelection(coords);
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(selection, null);
logger.log(TextFormatting.GREEN + "Координаты скопированы: " + TextFormatting.WHITE + coords);
} catch (Exception e) {
logger.log(TextFormatting.RED + "Не удалось скопировать в буфер! Координаты: " + coords);
}
} else {
logger.log(TextFormatting.RED + "ID не найден!");
}
return;
}
if (parameters.asString(0).isPresent() && parameters.asString(0).get().equalsIgnoreCase("near")) {
int count = parameters.asInt(1).orElse(5);
List<? extends PlayerEntity> players = mc.world.getPlayers().stream()
.filter(p -> !p.getUniqueID().equals(mc.player.getUniqueID()))
.sorted(Comparator.comparingDouble(p -> p.getDistance(mc.player)))
.limit(count)
.collect(Collectors.toList());
if (players == null || players.isEmpty()) {
logger.log(TextFormatting.RED + "Рядом нет игроков!");
return;
}
logger.log(TextFormatting.GREEN + "Ближайшие игроки:");
for (PlayerEntity player : players) {
int id = getOrCreatePlayerID(server, player);
String coords = (int) player.getPosX() + " " + (int) player.getPosY() + " " + (int) player.getPosZ();
copyData.put(id, coords);
logger.log(TextFormatting.YELLOW + player.getName().getString() + TextFormatting.WHITE +
" | X: " + (int) player.getPosX() +
" Y: " + (int) player.getPosY() +
" Z: " + (int) player.getPosZ() +
TextFormatting.GRAY + " (" + String.format("%.1f", mc.player.getDistance(player)) + " блоков)" +
TextFormatting.AQUA + " | .search copy " + id);
}
return;
}
String playerName = parameters.asString(0)
.orElseThrow(() -> new CommandException(TextFormatting.RED + "Укажите ник игрока!"));
PlayerEntity targetPlayer = mc.world.getPlayers().stream()
.filter(p -> p.getName().getString().equalsIgnoreCase(playerName))
.findFirst()
.orElse(null);
if (targetPlayer != null) {
String coords = (int) targetPlayer.getPosX() + " " + (int) targetPlayer.getPosY() + " " + (int) targetPlayer.getPosZ();
int id = getOrCreatePlayerID(server, targetPlayer);
copyData.put(id, coords);
logger.log(TextFormatting.GREEN + "Игрок найден: " + TextFormatting.WHITE + playerName);
logger.log(TextFormatting.YELLOW + "Координаты: " + TextFormatting.WHITE + coords);
logger.log(TextFormatting.YELLOW + "Расстояние: " + TextFormatting.WHITE +
String.format("%.1f", mc.player.getDistance(targetPlayer)) + " блоков");
logger.log(TextFormatting.AQUA + "Команда копирования: .search copy " + id);
return;
}
if (mc.getConnection() != null) {
boolean found = mc.getConnection().getPlayerInfoMap().stream()
.map(NetworkPlayerInfo::getGameProfile)
.anyMatch(info -> info.getName().equalsIgnoreCase(playerName));
if (found)
logger.log(TextFormatting.GREEN + "Игрок найден на сервере, но слишком далеко.");
else
logger.log(TextFormatting.RED + "Игрок не найден!");
} else {
logger.log(TextFormatting.RED + "Ошибка подключения к серверу!");
}
}
@Override
public String name() {
return "search";
}
@Override
public String description() {
return "Поиск игроков и копирование координат";
}
@Override
public java.util.List<String> adviceMessage() {
String p = prefix.get();
return java.util.List.of(
p + "search <ник>",
p + "search near <кол-во>",
p + "search copy <ID>"
);
}
}
Последнее редактирование: