-
Автор темы
- #1
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
Флай на трезубце под Matrix или другие анти-читы. (Grim, Intave НЕ обходит)
Если коротко, то функция берет трезубец в левую руку, и начинает зажимать его, после чего сетается моушен , и можно летать как-бы на обычном моушен флае. (Можно сделать быстрее, тоже будет работать)
Есть проверка на дождь (Метод isUnderRain), если игрок не под дождем тогда флай не работает. (Для избежания лишних флагов)
В принципе на нем можно бить киллаурой , а так-же будет идти немного больше урона, из-за того что трезубец будет бить игрока, если вы наведетесь на него.
| Видео где я показываю флай -
Если коротко, то функция берет трезубец в левую руку, и начинает зажимать его, после чего сетается моушен , и можно летать как-бы на обычном моушен флае. (Можно сделать быстрее, тоже будет работать)
Есть проверка на дождь (Метод isUnderRain), если игрок не под дождем тогда флай не работает. (Для избежания лишних флагов)
В принципе на нем можно бить киллаурой , а так-же будет идти немного больше урона, из-за того что трезубец будет бить игрока, если вы наведетесь на него.
| Видео где я показываю флай -
TridentFly | Arbuz.CC:
package wtf.arbuz.client.modules.impl.movement;
import net.minecraft.inventory.container.ClickType;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.item.TridentItem;
import org.lwjgl.glfw.GLFW;
import wtf.arbuz.client.event.Event;
import wtf.arbuz.client.event.impl.player.EventUpdate;
import wtf.arbuz.client.modules.Module;
import wtf.arbuz.client.modules.ModuleInfo;
import wtf.arbuz.client.modules.Type;
import wtf.arbuz.client.util.movement.MoveUtility;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.biome.Biome;
import net.minecraft.world.World;
@ModuleInfo(name = "TridentFly", type = Type.MOVEMENT)
public class TridentFly extends Module {
private int lastItemWindowId;
private static final int swapDelay = 100;
private long lastSwapTime = 0;
private int originalTridentSlot = -1;
public TridentFly() {
this.bind = GLFW.GLFW_KEY_H;
}
@Override
public void onEvent(Event event) {
if (event instanceof EventUpdate) {
if (isUnderRain()) {
handleTridentFlying();
handleTridentEquip();
handleTridentUse();
}
}
}
@Override
public void onDisable() {
super.onDisable();
unequipTrident();
}
private void handleTridentFlying() {
if (isTridentFlying() && mc.player.fallDistance >= 1.1) {
adjustPlayerMotion();
MoveUtility.setMotion(2);
}
}
private void adjustPlayerMotion() {
mc.player.motion.y = 0.0;
if (mc.gameSettings.keyBindJump.isKeyDown()) {
mc.player.motion.y += 1;
}
if (mc.gameSettings.keyBindSneak.isKeyDown()) {
mc.player.motion.y -= 1;
}
}
private void handleTridentEquip() {
if (!hasTridentEquipped() && !isTridentInOffhand()) {
equipTrident();
}
}
private void handleTridentUse() {
if (isTridentInOffhand()) {
mc.gameSettings.keyBindUseItem.setPressed(mc.player.ticksExisted % 16 < 15);
} else {
mc.gameSettings.keyBindUseItem.setPressed(false);
}
}
private boolean isTridentFlying() {
return mc.player.getHeldItemOffhand().getItem() instanceof TridentItem;
}
private void equipTrident() {
int tridentSlot = getHotbarSlotOfItem();
if (tridentSlot != -1) {
long currentTime = System.currentTimeMillis();
if (currentTime - lastSwapTime >= swapDelay) {
prepareForTridentSwap(tridentSlot);
performTridentSwap(tridentSlot);
lastSwapTime = currentTime;
}
} else {
toggle();
}
}
private void prepareForTridentSwap(int tridentSlot) {
lastItemWindowId = mc.player.openContainer.windowId;
originalTridentSlot = tridentSlot;
}
private void performTridentSwap(int tridentSlot) {
mc.playerController.windowClick(lastItemWindowId, tridentSlot, 0, ClickType.PICKUP, mc.player);
mc.playerController.windowClick(lastItemWindowId, 45, 0, ClickType.PICKUP, mc.player);
mc.playerController.windowClick(lastItemWindowId, tridentSlot, 0, ClickType.PICKUP, mc.player);
mc.playerController.syncCurrentPlayItem();
}
private void unequipTrident() {
if (originalTridentSlot != -1) {
mc.playerController.windowClick(mc.player.openContainer.windowId, 45, 0, ClickType.PICKUP, mc.player);
int targetSlot = originalTridentSlot < 9 ? 36 + originalTridentSlot : originalTridentSlot;
mc.playerController.windowClick(mc.player.openContainer.windowId, targetSlot, 0, ClickType.PICKUP, mc.player);
mc.playerController.windowClick(mc.player.openContainer.windowId, 45, 0, ClickType.PICKUP, mc.player);
originalTridentSlot = -1;
}
}
private boolean hasTridentEquipped() {
for (ItemStack stack : mc.player.inventory.offHandInventory) {
if (stack.getItem() == Items.TRIDENT) {
return true;
}
}
return false;
}
private boolean isTridentInOffhand() {
ItemStack offhandItem = mc.player.getHeldItemOffhand();
return offhandItem.getItem() == Items.TRIDENT;
}
private int getHotbarSlotOfItem() {
for (ItemStack stack : mc.player.inventory.offHandInventory) {
if (stack.getItem() instanceof TridentItem) {
return -2;
}
}
int slot = -1;
for (int i = 0; i < 36; i++) {
ItemStack s = mc.player.inventory.getStackInSlot(i);
if (s.getItem() instanceof TridentItem) {
slot = i;
break;
}
}
if (slot < 9 && slot != -1) {
slot += 36;
}
return slot;
}
private boolean isUnderRain() {
BlockPos playerPos = new BlockPos(mc.player.getPosX(), mc.player.getPosY(), mc.player.getPosZ());
World world = mc.world;
Biome biome = world.getBiome(playerPos);
return world.isRaining() && biome.getPrecipitation() == Biome.RainType.RAIN && world.canSeeSky(playerPos);
}
}