Начинающий
- Статус
- Онлайн
- Регистрация
- 12 Июн 2025
- Сообщения
- 32
- Реакции
- 0
- Выберите загрузчик игры
- Прочие моды
Привествую югейм, сливаю рабочий regionexploit, отправка кординат + добавления друзей сразу после отправки, работает засчет связки портов и сокет подключением
Отлично работает на lonygrief(noad), ну и логично на серверах где не запрещена команда //pos, код простой удобный половина была адаптирована на 1.21.4 думаю разберетесь, ss лень снимать ну и думаю к чему она если тут и так все понятно, критика привествуется но только аргументированная.
Отлично работает на lonygrief(noad), ну и логично на серверах где не запрещена команда //pos, код простой удобный половина была адаптирована на 1.21.4 думаю разберетесь, ss лень снимать ну и думаю к чему она если тут и так все понятно, критика привествуется но только аргументированная.
шедеврокод:
package ru.eliminate.module.impl.misc;
import net.minecraft.network.play.server.SChatPacket;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.vector.Vector3d;
import ru.eliminate.api.systems.event.EventHandler;
import ru.eliminate.api.systems.event.events.impl.packet.EventPacket;
import ru.eliminate.api.systems.event.events.impl.player.EventUpdate;
import ru.eliminate.Minced;
import ru.eliminate.api.utilities.chat.ChatUtility;
import ru.eliminate.api.utilities.settings.impl.ModeSetting;
import ru.eliminate.api.utilities.settings.impl.SliderSetting;
import ru.eliminate.client.modules.Module;
import ru.eliminate.client.modules.api.Category;
import ru.eliminate.client.modules.api.ModuleInfo;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicLong;
@ModuleInfo(name = "RegionExploit", description = "iба чотка приватит лохов", category = Category.MISC)
public class RegionExploit extends Module {
public ModeSetting instanceMode = new ModeSetting("Режим подключения", this, "Основной", "Основной", "Вторичный");
public SliderSetting boxWidth = new SliderSetting("Размер бокса", this, 4.0f, 2.0f, 100.0f, 1.0f, () -> instanceMode.is("Вторичный"));
private static final int PORT = 25566;
private ServerSocket serverSocket;
private Socket clientSocket;
private Socket responseSocket;
private Thread serverThread;
private Thread clientThread;
private final AtomicBoolean running = new AtomicBoolean(false);
private boolean coordinatesSent = false;
private String lastRegionName = null;
private AtomicLong regionCreationStartTime = new AtomicLong(0);
private volatile boolean regionCreationInProgress = false;
private volatile boolean regionCreationSuccess = false;
private volatile boolean memberAdded = false;
private BlockPos lastRegionCenter = null;
private String lastRegionPlayerName = null;
private String primaryPlayerName = null;
private static final long REGION_CREATION_TIMEOUT = 8000;
private long lastConnectionAttempt = 0;
@Override
public void onEnable() {
super.onEnable();
running.set(true);
coordinatesSent = false;
lastConnectionAttempt = 0;
if (instanceMode.is("Основной")) {
startPrimaryMode();
} else {
startSecondaryMode();
}
}
@Override
public void onDisable() {
super.onDisable();
running.set(false);
coordinatesSent = false;
closeConnections();
}
@EventHandler
public void onUpdate(EventUpdate event) {
if (mc.player == null || mc.world == null) return;
if (instanceMode.is("Основной") && isEnabled() && !coordinatesSent) {
coordinatesSent = true;
new Thread(() -> {
try {
Thread.sleep(100);
sendCoordinates();
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}, "RegionExploit-SendCoords").start();
}
}
private void startPrimaryMode() {
clientThread = new Thread(() -> {
while (running.get() && isEnabled()) {
try {
if (clientSocket == null || clientSocket.isClosed()) {
Thread.sleep(2000);
try {
clientSocket = new Socket();
clientSocket.connect(new java.net.InetSocketAddress("localhost", PORT), 2000);
clientSocket.setSoTimeout(5000);
ChatUtility.addMessage("Подключено к вторичному клиенту");
startResponseListener();
} catch (java.net.SocketTimeoutException e) {
long currentTime = System.currentTimeMillis();
if (!coordinatesSent || (currentTime - lastConnectionAttempt > 10000)) {
ChatUtility.addErrorMessage("Второй клиент не найден. Убедитесь, что второй Minecraft запущен с включенным RegionExploit в режиме Вторичный");
lastConnectionAttempt = currentTime;
}
} catch (IOException e) {
long currentTime = System.currentTimeMillis();
if (!coordinatesSent || (currentTime - lastConnectionAttempt > 10000)) {
ChatUtility.addErrorMessage("Второй клиент не найден. Убедитесь, что второй Minecraft запущен с включенным RegionExploit в режиме Вторичный");
lastConnectionAttempt = currentTime;
}
}
} else {
Thread.sleep(5000);
}
} catch (InterruptedException e) {
break;
}
}
}, "RegionExploit-PrimaryClient");
clientThread.setDaemon(true);
clientThread.start();
}
private void startSecondaryMode() {
serverThread = new Thread(() -> {
try {
serverSocket = new ServerSocket(PORT);
serverSocket.setSoTimeout(1000);
while (running.get() && isEnabled()) {
try {
Socket socket = serverSocket.accept();
socket.setSoTimeout(10000);
ChatUtility.addMessage("Подключено к основному клиенту");
handleIncomingConnection(socket);
} catch (java.net.SocketTimeoutException e) {
continue;
} catch (IOException e) {
if (running.get() && isEnabled()) {
try {
Thread.sleep(1000);
if (serverSocket != null && !serverSocket.isClosed()) {
serverSocket.close();
}
serverSocket = new ServerSocket(PORT);
serverSocket.setSoTimeout(1000);
} catch (Exception ex) {
break;
}
} else {
break;
}
}
}
} catch (IOException e) {
}
}, "RegionExploit-SecondaryServer");
serverThread.setDaemon(true);
serverThread.start();
}
private void handleIncomingConnection(Socket socket) {
synchronized (this) {
responseSocket = socket;
}
Thread handlerThread = new Thread(() -> {
try {
socket.setSoTimeout(30000);
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line;
while (running.get() && isEnabled() && !socket.isClosed()) {
try {
line = reader.readLine();
if (line == null) {
break;
}
if (line.startsWith("NICK:")) {
primaryPlayerName = line.substring(5);
continue;
}
final String coordinates = line;
new Thread(() -> {
processCoordinates(coordinates);
}, "RegionExploit-ProcessCoords").start();
} catch (java.net.SocketTimeoutException e) {
continue;
}
}
} catch (IOException e) {
} finally {
synchronized (this) {
if (responseSocket == socket) {
responseSocket = null;
}
}
try {
socket.close();
} catch (IOException ignored) {}
}
}, "RegionExploit-HandleConnection");
handlerThread.setDaemon(true);
handlerThread.start();
}
private void sendCoordinates() {
if (mc.player == null) {
return;
}
if (clientSocket == null || clientSocket.isClosed()) {
try {
clientSocket = new Socket();
clientSocket.connect(new java.net.InetSocketAddress("localhost", PORT), 2000);
clientSocket.setSoTimeout(5000);
ChatUtility.addMessage("Подключен к Вторичному Клиенту");
startResponseListener();
} catch (IOException e) {
coordinatesSent = false;
ChatUtility.addErrorMessage("Второй клиент не найден. Убедитесь, что второй Minecraft запущен с включенным RegionExploit в режиме Вторичный");
return;
}
}
try {
if (clientSocket.isClosed() || !clientSocket.isConnected()) {
clientSocket = null;
coordinatesSent = false;
return;
}
PrintWriter writer = new PrintWriter(clientSocket.getOutputStream(), true);
String playerName = mc.player.getGameProfile().getName();
writer.println("NICK:" + playerName);
writer.flush();
BlockPos pos = mc.player.getPosition();
String data = pos.getX() + "," + pos.getY() + "," + pos.getZ() + "," + playerName;
writer.println(data);
writer.flush();
ChatUtility.addMessage("Пакет отправлен..");
} catch (IOException e) {
try {
if (clientSocket != null) {
clientSocket.close();
}
} catch (IOException ignored) {}
clientSocket = null;
coordinatesSent = false;
}
}
private void processCoordinates(String data) {
if (mc.player == null || mc.world == null) return;
try {
String[] parts = data.split(",");
if (parts.length < 3) return;
int x = Integer.parseInt(parts[0]);
int y = Integer.parseInt(parts[1]);
int z = Integer.parseInt(parts[2]);
String playerName;
if (parts.length >= 4) {
playerName = parts[3];
} else {
playerName = mc.player.getGameProfile().getName();
}
int width = (int) boxWidth.getValue();
int halfWidth = width / 2;
int minX = x - halfWidth;
int maxX = x + halfWidth - 1;
int minZ = z - halfWidth;
int maxZ = z + halfWidth - 1;
String regionName = "region_" + Math.abs(minX) + "_" + Math.abs(minZ);
lastRegionName = regionName;
lastRegionCenter = new BlockPos(x, y, z);
lastRegionPlayerName = playerName;
regionCreationInProgress = true;
regionCreationSuccess = false;
memberAdded = false;
regionCreationStartTime.set(System.currentTimeMillis());
checkAndCreateRegion(regionName, minX, maxX, minZ, maxZ, y, width, playerName);
} catch (Exception ex) {
}
}
private void sendMessageToPrimary(String message) {
if (!instanceMode.is("Вторичный")) return;
Socket socket;
synchronized (this) {
socket = responseSocket;
}
if (socket != null && !socket.isClosed() && socket.isConnected()) {
try {
PrintWriter writer = new PrintWriter(socket.getOutputStream(), true);
writer.println("MSG:" + message);
writer.flush();
} catch (IOException ex) {
synchronized (this) {
if (responseSocket == socket) {
responseSocket = null;
}
}
try {
socket.close();
} catch (IOException ignored) {}
}
}
}
private void startResponseListener() {
Thread responseThread = new Thread(() -> {
try {
if (clientSocket == null || clientSocket.isClosed()) {
return;
}
clientSocket.setSoTimeout(10000);
BufferedReader reader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String line;
while (running.get() && isEnabled() && clientSocket != null && !clientSocket.isClosed()) {
try {
line = reader.readLine();
if (line == null) {
break;
}
if (line.startsWith("MSG:")) {
String message = line.substring(4);
ChatUtility.addMessage(message);
}
} catch (java.net.SocketTimeoutException e) {
continue;
}
}
} catch (IOException ex) {
} finally {
try {
if (clientSocket != null && !clientSocket.isClosed()) {
clientSocket.close();
}
} catch (IOException ignored) {}
clientSocket = null;
}
}, "RegionExploit-ResponseListener");
responseThread.setDaemon(true);
responseThread.start();
}
private void checkAndCreateRegion(String regionName, int minX, int maxX, int minZ, int maxZ, int y, int width, String playerName) {
if (mc.player.connection != null) {
new Thread(() -> {
try {
BlockPos pos1 = new BlockPos(minX, y - width, minZ);
BlockPos pos2 = new BlockPos(maxX, y + 10, maxZ);
String pos1Cmd = "//pos1 " + pos1.getX() + "," + pos1.getY() + "," + pos1.getZ();
String pos2Cmd = "//pos2 " + pos2.getX() + "," + pos2.getY() + "," + pos2.getZ();
String defineCmd = "/rg define " + regionName;
String privateCmd = "/rg claim " + regionName;
String checkCmd = "/rg info " + regionName;
boolean isFriend = Minced.getInstance().getFriendManager().isFriend(playerName);
String myName = mc.player.getGameProfile().getName();
mc.player.sendChatMessage(checkCmd);
Thread.sleep(500);
mc.player.sendChatMessage(pos1Cmd);
Thread.sleep(800);
mc.player.sendChatMessage(pos2Cmd);
Thread.sleep(800);
mc.player.sendChatMessage(defineCmd);
Thread.sleep(1000);
mc.player.sendChatMessage(privateCmd);
Thread.sleep(1000);
if (isFriend && primaryPlayerName != null) {
String addMyNameCmd = "/rg addmember " + regionName + " " + myName;
String addFriendCmd = "/rg addmember " + regionName + " " + primaryPlayerName;
mc.player.sendChatMessage(addMyNameCmd);
Thread.sleep(500);
mc.player.sendChatMessage(addFriendCmd);
Thread.sleep(500);
} else {
String addCmd = "/rg addmember " + regionName + " " + playerName;
mc.player.sendChatMessage(addCmd);
Thread.sleep(500);
}
} catch (InterruptedException ex) {
Thread.currentThread().interrupt();
} catch (Exception ex) {
sendMessageToPrimary("Ошибка при создании региона: " + ex.getMessage());
}
}).start();
}
}
@EventHandler
public void onPacket(EventPacket e) {
if (!instanceMode.is("Вторичный")) return;
if (!regionCreationInProgress || lastRegionName == null) return;
if (mc.player == null || mc.world == null) return;
if (e.getPacket() instanceof SChatPacket p && e.isReceive()) {
String rawMessage = p.getChatComponent().getString();
String message = rawMessage.toLowerCase();
boolean isError = false;
String errorMessage = null;
boolean isSuccess = false;
if (message.contains("region") || message.contains("регион")) {
if (message.contains("already exists") || message.contains("уже существует") ||
message.contains("already defined") || message.contains("уже определён")) {
isError = true;
errorMessage = "Регион " + lastRegionName + " уже существует";
} else if (message.contains("overlaps") || message.contains("пересекается") ||
message.contains("intersects") || message.contains("intersection")) {
isError = true;
errorMessage = "Регион " + lastRegionName + " пересекается с другим";
} else if (message.contains("nearby") || message.contains("рядом") ||
message.contains("too close") || message.contains("слишком близко") ||
message.contains("conflict") || message.contains("конфликт")) {
isError = true;
errorMessage = "Регион " + lastRegionName + " слишком близко к другому";
} else if (message.contains("permission") || message.contains("права") ||
message.contains("no permission") || message.contains("нет прав") ||
message.contains("cannot") || message.contains("не могу") ||
message.contains("denied") || message.contains("запрещено")) {
isError = true;
errorMessage = "Нет прав для создания региона " + lastRegionName;
}
if (!isError && (message.contains("created") || message.contains("created region") ||
message.contains("claimed") || message.contains("claimed region") ||
message.contains("success") || message.contains("успешно") ||
message.contains("создан") || message.contains("запривачен") ||
message.contains("defined") || message.contains("определён"))) {
isSuccess = true;
}
}
if ((message.contains("added") && message.contains("member")) ||
(message.contains("добавлен") && (message.contains("участник") || message.contains("игрок"))) ||
(message.contains("addmember") && (message.contains("success") || message.contains("успешно"))) ||
(message.contains("member") && (message.contains("added") || message.contains("добавлен")))) {
if (lastRegionPlayerName != null && !memberAdded) {
memberAdded = true;
}
}
if (isSuccess) {
regionCreationSuccess = true;
regionCreationInProgress = false;
sendMessageToPrimary("Регион успешно создан");
if (memberAdded && lastRegionPlayerName != null) {
sendMessageToPrimary("Добавлены друзья: " + lastRegionPlayerName);
} else {
sendMessageToPrimary("Друзей не обнаружено");
}
lastRegionName = null;
lastRegionCenter = null;
lastRegionPlayerName = null;
memberAdded = false;
return;
}
if (isError) {
regionCreationInProgress = false;
regionCreationSuccess = false;
memberAdded = false;
lastRegionName = null;
lastRegionCenter = null;
lastRegionPlayerName = null;
}
}
}
private void closeConnections() {
running.set(false);
try {
if (clientSocket != null && !clientSocket.isClosed()) {
clientSocket.close();
}
} catch (IOException ignored) {}
clientSocket = null;
Socket socket;
synchronized (this) {
socket = responseSocket;
responseSocket = null;
}
try {
if (socket != null && !socket.isClosed()) {
socket.close();
}
} catch (IOException ignored) {}
try {
if (serverSocket != null && !serverSocket.isClosed()) {
serverSocket.close();
}
} catch (IOException ignored) {}
serverSocket = null;
try {
if (clientThread != null && clientThread.isAlive()) {
clientThread.interrupt();
clientThread.join(1000);
}
if (serverThread != null && serverThread.isAlive()) {
serverThread.interrupt();
serverThread.join(1000);
}
} catch (InterruptedException ignored) {}
}
}