-
Автор темы
- #1
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
Если че обычный декомпил, работает нормально, тестил.
Expensive Ready.
Работает только на втором виде Gui(Beta)
захотите переделаете
там ещё утилка нужна типо, вот она
Expensive Ready.
Работает только на втором виде Gui(Beta)
захотите переделаете
AutoTransfer.java:
package ru.elysium.modules.impl.player;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screen.inventory.ContainerScreen;
import net.minecraft.inventory.container.ChestContainer;
import net.minecraft.inventory.container.ClickType;
import net.minecraft.inventory.container.Container;
import net.minecraft.inventory.container.Slot;
import ru.elysium.events.Event;
import ru.elysium.modules.Function;
import ru.elysium.modules.FunctionAnnotation;
import ru.elysium.modules.Type;
import ru.elysium.modules.impl.player.Multithreading;
import ru.elysium.modules.settings.imp.SliderSetting;
import ru.elysium.modules.settings.imp.TextSetting;
import ru.elysium.util.ClientUtil;
import ru.elysium.util.math.MathUtil;
@FunctionAnnotation(name="AutoTransfer", type=Type.Player)
public class AutoTransfer
extends Function {
public TextSetting anarchy = new TextSetting("Анархия", "101");
private final SliderSetting itemCount = new SliderSetting("Кол-во предметов", 1.0f, 3.0f, 10.0f, 1.0f);
private final SliderSetting coldown = new SliderSetting("Кулдаун", 500.0f, 10.0f, 1000.0f, 10.0f);
public TextSetting sellCommand = new TextSetting("Команда для продажи", "/ah dsell 10");
private boolean buyAction = false;
private boolean isClicking = false;
private long lastTransferTime = 0L;
private final ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
public AutoTransfer() {
this.addSettings(this.anarchy, this.itemCount, this.sellCommand, this.coldown);
}
@Override
public void onEnable() {
if (Minecraft.player != null && AutoTransfer.mc.world != null) {
if (Minecraft.player.ticksExisted < 500) {
float f = (float)(500 - Minecraft.player.ticksExisted) / 20.0f;
ClientUtil.sendMesage("Подождите " + MathUtil.round(f, 2) + " секунд");
super.onEnable();
} else {
String string = this.anarchy.get();
if (!this.isNumbers(string)) {
ClientUtil.sendMesage("AutoTransfer - Введите номер анархии! (Только числа).");
super.onEnable();
} else {
int n = Integer.parseInt(this.anarchy.get());
if (n >= 0 && n <= 600) {
this.transfer(n);
super.onEnable();
} else {
ClientUtil.sendMesage("AutoTransfer - Введите номер анархии от 0 до 600!");
super.onEnable();
}
}
}
} else {
super.onEnable();
}
}
@Override
public void onEvent(Event event) {
}
public void onEvent(org.w3c.dom.events.Event event) {
this.onMotion();
}
private boolean isNumbers(String string) {
return string.matches("\\d+");
}
private void transfer(int n) {
Multithreading.runAsync(this::lambda$transfer$0);
}
private void lambda$transfer$0() {
}
private void onMotion() {
if (this.buyAction && AutoTransfer.mc.currentScreen instanceof ContainerScreen) {
ContainerScreen containerScreen = (ContainerScreen)AutoTransfer.mc.currentScreen;
int n = this.itemCount.getValue().intValue();
int n2 = 0;
for (Slot slot : ((Container)containerScreen.getContainer()).inventorySlots) {
if (slot.getStack().isEmpty() || System.currentTimeMillis() - this.lastTransferTime < this.coldown.getValue().longValue()) continue;
if (!this.isClicking) {
this.isClicking = true;
AutoTransfer.mc.playerController.windowClick(((Container)containerScreen.getContainer()).windowId, slot.slotNumber, 0, ClickType.QUICK_MOVE, Minecraft.player);
++n2;
this.lastTransferTime = System.currentTimeMillis();
CompletableFuture.runAsync(this::lambda$onMotion$1);
this.executor.schedule(AutoTransfer::lambda$onMotion$2, this.coldown.getValue().longValue(), TimeUnit.MILLISECONDS);
}
if (n2 < n) continue;
Minecraft.player.closeScreen();
break;
}
}
}
@Override
public void onDisable() {
super.onDisable();
}
private static void lambda$onMotion$2() {
}
private void lambda$onMotion$1() {
try {
Thread.sleep(500L);
}
catch (InterruptedException interruptedException) {
interruptedException.printStackTrace();
}
finally {
this.isClicking = false;
}
}
private void lambda$transfer$0(int n) {
Minecraft.player.inventory.currentItem = 0;
int n2 = 0;
for (Slot slot : Minecraft.player.container.inventorySlots) {
if (slot.getStack().isEmpty()) continue;
if (n2 >= this.itemCount.getValue().intValue()) break;
if (Minecraft.player.inventory.getStackInSlot(0).isEmpty() && slot.slotNumber != 0) {
AutoTransfer.mc.playerController.windowClick(Minecraft.player.container.windowId, slot.slotNumber, 0, ClickType.PICKUP, Minecraft.player);
AutoTransfer.mc.playerController.windowClick(Minecraft.player.container.windowId, 36, 0, ClickType.PICKUP, Minecraft.player);
}
Multithreading.awaitMillis(100L);
if (!Minecraft.player.inventory.getStackInSlot(0).isEmpty()) {
Minecraft.player.sendChatMessage(this.sellCommand.get());
++n2;
Multithreading.awaitMillis(250L);
}
Multithreading.awaitMillis(100L);
}
Minecraft.player.sendChatMessage("/an" + n);
Multithreading.awaitMillis(400L);
Minecraft.player.sendChatMessage("/ah " + mc.getSession().getUsername());
Multithreading.awaitMillis(200L);
int n3 = 0;
do {
if (Minecraft.player.openContainer instanceof ChestContainer) break;
Multithreading.awaitMillis(50L);
} while (++n3 <= 100);
Multithreading.awaitMillis(150L);
this.buyAction = true;
}
}
Multithreading.java:
package ru.elysium.modules.impl.player;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import lombok.NonNull;
public class Multithreading {
private static final ScheduledExecutorService RUNNABLE_EXECUTOR = Executors.newScheduledThreadPool(20, new ThreadFactory(){
private final AtomicInteger COUNTER = new AtomicInteger(0);
@Override
public Thread newThread(@NonNull Runnable runnable) {
if (runnable == null) {
throw new NullPointerException("r is marked non-null but is null");
}
return new Thread(runnable, "Multithreading Thread " + this.COUNTER.incrementAndGet());
}
});
public static ExecutorService EXECUTOR = Executors.newCachedThreadPool(new ThreadFactory(){
private final AtomicInteger COUNTER = new AtomicInteger(0);
@Override
public Thread newThread(@NonNull Runnable runnable) {
if (runnable == null) {
throw new NullPointerException("r is marked non-null but is null");
}
return new Thread(runnable, "Multithreading Thread " + this.COUNTER.incrementAndGet());
}
});
public static void awaitMillis(long l) {
try {
EXECUTOR.awaitTermination(l, TimeUnit.MILLISECONDS);
}
catch (Exception exception) {
// empty catch block
}
}
public static void schedule(Runnable runnable, long l, long l2, TimeUnit timeUnit) {
RUNNABLE_EXECUTOR.scheduleAtFixedRate(runnable, l, l2, timeUnit);
}
public static ScheduledFuture<?> schedule(Runnable runnable, long l, TimeUnit timeUnit) {
return RUNNABLE_EXECUTOR.schedule(runnable, l, timeUnit);
}
public static int getTotal() {
return ((ThreadPoolExecutor)EXECUTOR).getActiveCount();
}
public static void runAsync(Runnable runnable) {
EXECUTOR.execute(runnable);
}
}