-
Автор темы
- #1
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
О нет туски меня сватнит : )
AutoTotem:
import tusky.yougame.client.module.impl.combat.AutoTotem;
import tusky.yougame.client.setting.BooleanSetting;
import tusky.yougame.client.setting.NumberSetting;
import tusky.yougame.client.setting.TimerHelper;
import tusky.yougame.client.util.Fonts;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.item.ItemStack;
import net.minecraft.util.text.TextFormatting;
public class AutoTotem extends Module {
private final BooleanSetting switchBack = new BooleanSetting("Swap Back", true, () -> true);
private final BooleanSetting checkFall = new BooleanSetting("Check Fall", true, () -> true);
private final BooleanSetting checkObsidian = new BooleanSetting("Check Obsidian", true, () -> true);
private final NumberSetting swapBackDelay = new NumberSetting("Swap back delay", 100, 10, 500, 5, switchBack::getBoolValue);
private final NumberSetting fallDistance = new NumberSetting("Fall Distance", 15.0f, 5.0f, 125.0f, 5.0f, checkFall::getBoolValue);
private final NumberSetting obsidianDistance = new NumberSetting("Obsidian Distance", 6, 1, 8, 1, checkObsidian::getBoolValue);
private final List<Integer> lastItem = new ArrayList<>();
private final TimerHelper timerHelper = new TimerHelper();
private boolean swap = false;
private String previousTotem = "";
private int lastTotemSlot = -1;
public AutoTotem() {
super("AutoTotem", Category.COMBAT);
settings.add(switchBack);
settings.add(checkFall);
settings.add(checkObsidian);
settings.add(swapBackDelay);
settings.add(fallDistance);
settings.add(obsidianDistance);
}
@Override
public void onEnable() {
if (mc.player != null && mc.world != null) {
if (ModuleManager.isModuleEnabled("AutoCrystal")) {
ChatUtil.printChatWithPrefix(TextFormatting.RED + "Отключите AutoCrystal перед использованием этого модуля, чтобы избежать потенциальных конфликтов!");
toggle();
return;
}
previousTotem = mc.player.getHeldItemOffhand().getItem().getRegistryName().toString();
}
}
@Override
public void onRender2D(EventRender2D event) {
if (isEnabled()) {
if (mc.player != null && mc.world != null) {
int totemCount = foundTotemCount();
Fonts.minecraftFontRenderer.drawCenteredStringWithShadow(totemCount + "", (event.getResolution().getScaledWidth() / 2f + 19), (event.getResolution().getScaledHeight() / 2f), 0xFFFFFFFF);
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();
}
}
}
}
}
@Override
public void onUpdate() {
if (isEnabled()) {
if (mc.player != null && mc.world != null) {
int totemCount = foundTotemCount();
boolean totemChanged = updateTotemStatus(totemCount);
if (mc.player.getHealth() < health.getNumberValue() || checkFall() || checkObsidian() && totemCount != 0 && mc.player.getHeldItemOffhand().isEmpty() && !mc.player.isHandActive()) {
int totemSlot = findTotemSlot();
if (totemSlot != -1 && totemSlot != lastTotemSlot) {
swapWithOffhand(totemSlot);
swap = true;
lastItem.clear();
lastItem.add(totemSlot);
lastTotemSlot = totemSlot;
}
} else if (switchBack.getBoolValue() && swap && totemCount == 0 && !previousTotem.isEmpty() && totemChanged) {
if (!(mc.player.inventory.getStackInSlot(lastItem.get(0)).getItem() instanceof AirItem)) {
if (timerHelper.hasTimeElapsed(swapBackDelay.getNumberValue())) {
swapBack();
timerHelper.reset();
lastTotemSlot = -1;
}
}
}
}
}
}
private int findTotemSlot() {
List<Integer> totemSlots = new ArrayList<>();
for (int i = 0; i < 45; i++) {
ItemStack stack = mc.player.inventory.getStackInSlot(i);
if (stack.getItem() == Items.TOTEM_OF_UNDYING) {
totemSlots.add(i);
}
}
if (totemSlots.isEmpty()) {
return -1;
} else {
int randomIndex = new Random().nextInt(totemSlots.size());
return totemSlots.get(randomIndex);
}
}
private void swapWithOffhand(int slot) {
mc.playerController.windowClick(0, slot < 9 ? slot + 36 : slot, 1, ClickType.PICKUP, mc.player);
mc.playerController.windowClick(0, 45, 0, ClickType.PICKUP, mc.player);
mc.playerController.windowClick(0, slot < 9 ? slot + 36 : slot, 0, ClickType.PICKUP, mc.player);
}
private void swapBack() {
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);
}
private boolean checkFall() {
return mc.player.fallDistance >= fallDistance.getNumberValue();
}
private boolean checkObsidian() {
if (!checkObsidian.getBoolValue() || mc.objectMouseOver == null || mc.objectMouseOver.typeOfHit != RayTraceResult.Type.BLOCK) {
return false;
}
BlockPos pos = mc.objectMouseOver.getBlockPos();
Block block = mc.world.getBlockState(pos).getBlock();
return block == Blocks.OBSIDIAN || block == Blocks.CRYING_OBSIDIAN;
}
@Override
public void onDisable() {
swap = false;
lastItem.clear();
previousTotem = "";
lastTotemSlot = -1;
}
@Override
public List<Setting<?>> getSettings() {
return settings;
}
}