-
Автор темы
- #1
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
Код:
@ModuleInfo(
name = "AutoTotem",
category = Category.Combat
)
@Getter
@Setter
public class AutoTotem extends Module {
private final NumberSetting health;
private final BooleanSetting countTotem;
private final BooleanSetting checkCrystal;
private final NumberSetting radiusCrystal;
private final NumberSetting swapBackDelay;
private final NumberSetting fallDistance;
public static Minecraft mc = Minecraft.getInstance();
private final BooleanSetting switchBack = new BooleanSetting("Swap Back", true, () -> true);
private final BooleanSetting checkFall;
private final List<Integer> lastItem = new ArrayList<>();
private final TimerHelper timerHelper = new TimerHelper();
private boolean swap = false;
public AutoTotem() {
health = new NumberSetting("Health Amount", 3.5f, 1.f, 20.f, 0.5F, () -> true);
swapBackDelay = new NumberSetting("Swap back delay", 100, 10, 500, 5, switchBack::getBoolValue);
countTotem = new BooleanSetting("Count Totem", true, () -> true);
checkFall = new BooleanSetting("Check Fall", true, () -> true);
fallDistance = new NumberSetting("Fall Distance", 15.0f, 5.0f, 125.0f, 5.0f, checkFall::getBoolValue);
checkCrystal = new BooleanSetting("Check Crystal", true, () -> true);
radiusCrystal = new NumberSetting("Distance to Crystal", 6, 1, 8, 1, checkCrystal::getBoolValue);
addSettings(switchBack, swapBackDelay, health, countTotem, checkFall, fallDistance, checkCrystal, radiusCrystal);
}
private int fountTotemCount() {
int count = 0;
for (int i = 0; i < mc.player.inventory.getSizeInventory(); i++) {
ItemStack stack = mc.player.inventory.getStackInSlot(i);
if (stack.getItem() == Items.TOTEM_OF_UNDYING) {
count++;
}
}
return count;
}
@EventTarget
public void onRender2D(EventRender2D event) {
if (fountTotemCount() > 0 && countTotem.getBoolValue()) {
Fonts.MANROPE_BOLD.get(17).drawCenteredStringWithShadow(fountTotemCount() + "", (event.getResolution().getScaledWidth() / 2f + 19), (event.getResolution().getScaledHeight() / 2f), -1);
for (int i = 0; i < mc.player.inventory.getSizeInventory(); i++) {
ItemStack stack = mc.player.inventory.getStackInSlot(i);
if (stack.getItem() == Items.TOTEM_OF_UNDYING) {
GlStateManager.pushMatrix();
GlStateManager.disableBlend();
mc.getItemRenderer().renderItemAndEffectIntoGUI(stack, event.getResolution().getScaledWidth() / 2 + 4, event.getResolution().getScaledHeight() / 2 - 7);
GlStateManager.popMatrix();
}
}
}
}
@EventTarget
public void onUpdate(EventUpdate event) {
int tIndex = -1;
int totemCount = 0;
for (int i = 0; i < 45; i++) {
if (mc.player.inventory.getStackInSlot(i).getItem() == Items.TOTEM_OF_UNDYING && tIndex == -1) {
tIndex = i;
}
if (mc.player.inventory.getStackInSlot(i).getItem() == Items.TOTEM_OF_UNDYING) {
totemCount++;
}
}
if ((mc.player.getHealth() < health.getNumberValue() || checkCrystal() || checkFall(fallDistance.getNumberValue())) && totemCount != 0 && tIndex != -1) {
if (mc.player.getHeldItemOffhand().getItem() != Items.TOTEM_OF_UNDYING) {
mc.playerController.windowClick(0, tIndex < 9 ? tIndex + 36 : tIndex, 1, ClickType.PICKUP, mc.player);
mc.playerController.windowClick(0, 45, 0, ClickType.PICKUP, mc.player);
mc.playerController.windowClick(0, tIndex < 9 ? tIndex + 36 : tIndex, 0, ClickType.PICKUP, mc.player);
swap = true;
lastItem.add(tIndex);
}
} else if (switchBack.getBoolValue() && (swap || totemCount == 0) && lastItem.size() > 0) {
if (!(mc.player.inventory.getStackInSlot(lastItem.get(0)).getItem() instanceof AirItem)) {
if (timerHelper.hasReached(swapBackDelay.getNumberValue())) {
mc.playerController.windowClick(0, lastItem.get(0) < 9 ? lastItem.get(0) + 36 : lastItem.get(0), 0, ClickType.PICKUP, mc.player);
mc.playerController.windowClick(0, 45, 0, ClickType.PICKUP, mc.player);
mc.playerController.windowClick(0, lastItem.get(0) < 9 ? lastItem.get(0) + 36 : lastItem.get(0), 0, ClickType.PICKUP, mc.player);
timerHelper.reset();
}
}
swap = false;
lastItem.clear();
}
}
private boolean checkFall(float fallDist) {
if (!checkFall.getBoolValue()) {
return false;
}
return mc.player.fallDistance > fallDist;
}
private boolean checkCrystal() {
if (!checkCrystal.getBoolValue()) {
return false;
}
for (Entity entity : AutoTotem.mc.world.loadedEntityList) {
if (!(entity instanceof EnderCrystalEntity) || !(AutoTotem.mc.player.getDistance(entity) <= radiusCrystal.getNumberValue()))
continue;
return true;
}
return false;
}
}