Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Обход античита AutoFarm Spooky full gpt, Excellent Recode

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
16 Янв 2025
Сообщения
888
Реакции
3
Выберите загрузчик игры
  1. Vanilla
  2. Прочие моды
Пр я щас делаю свой гпт клиент сделал AutoFarm с помощью мотыги на тросник работает все но кроме автопочинки ну она работает но плохо работает а точнее очень плохо
ss -
code:
Код:
Expand Collapse Copy
package org.excellent.client.managers.module.impl.player;

import lombok.AccessLevel;
import lombok.Getter;
import lombok.experimental.Accessors;
import lombok.experimental.FieldDefaults;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.enchantment.EnchantmentHelper;
import net.minecraft.enchantment.Enchantments;
import net.minecraft.inventory.container.ClickType;
import net.minecraft.item.HoeItem;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.network.play.client.*;
import net.minecraft.util.Direction;
import net.minecraft.util.Hand;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.BlockRayTraceResult;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.vector.Vector3d;
import org.excellent.client.api.events.orbit.EventHandler;
import org.excellent.client.managers.component.impl.rotation.Rotation;
import org.excellent.client.managers.component.impl.rotation.SmoothRotationComponent;
import org.excellent.client.managers.events.player.UpdateEvent;
import org.excellent.client.managers.module.Category;
import org.excellent.client.managers.module.Module;
import org.excellent.client.managers.module.ModuleInfo;
import org.excellent.client.utils.other.Instance;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

@Getter
@Accessors(fluent = true)
@FieldDefaults(level = AccessLevel.PRIVATE)
@ModuleInfo(name = "AutoFarm", category = Category.PLAYER)
public class AutoFarm extends Module {

public static AutoFarm getInstance() {
return Instance.get(AutoFarm.class);
    }
   
BlockPos targetSugarCane = null;
long lastActionTime = 0;
long lastRightClickTime = 0;
long lastExpThrowTime = 0;
int oldSlot = -1;
int savedHoeSlot = -1;
boolean isRepairing = false;
boolean isGrowing = false;
boolean isHarvesting = false;

@Override
    protected void onDisable() {
targetSugarCane = null;
lastRightClickTime = 0;
lastExpThrowTime = 0;
savedHoeSlot = -1;
isGrowing = false;
isHarvesting = false;
isRepairing = false;
        restoreSlot();
    }

@EventHandler
    public void onUpdate(UpdateEvent e) {
if (mc.player == null || mc.world == null) {
 return;
        }

long now = System.currentTimeMillis();
if (now - lastActionTime < 1f) {
 return;
        }

 if (handleToolRepair()) {
if (isRepairing) {
 return;
            }
        }

if (!isValidSugarCane(targetSugarCane)) {
 targetSugarCane = findSugarCane();
        }

if (targetSugarCane == null) {
isGrowing = false;
isHarvesting = false;
            restoreSlot();
 return;
        }

if (rotateToBlock(targetSugarCane)) {
        }

int height = getSugarCaneHeight(targetSugarCane);

if (height == 1) {
growSugarCane(targetSugarCane);
} else if (height >= 2 && height < 4) {
growSugarCane(targetSugarCane);
} else if (height >= 4) {
harvestSugarCane(targetSugarCane);
        }

 lastActionTime = now;
    }

private boolean handleToolRepair() {
ItemStack mainHandItem = mc.player.getHeldItemMainhand();
ItemStack offHandItem = mc.player.getHeldItemOffhand();

ItemStack hoeToCheck = null;
boolean hoeInOffHand = false;

if (mainHandItem.getItem() instanceof HoeItem && mainHandItem.isDamaged()) {
            hoeToCheck = mainHandItem;
hoeInOffHand = false;
} else if (offHandItem.getItem() instanceof HoeItem && offHandItem.isDamaged()) {
            hoeToCheck = offHandItem;
hoeInOffHand = true;
        }

if (hoeToCheck != null) {
float durabilityPercent = ((float) (hoeToCheck.getMaxDamage() - hoeToCheck.getDamage()) / hoeToCheck.getMaxDamage()) * 100;
if (durabilityPercent <= 10 && !isRepairing) {
                startRepair();
} else if (durabilityPercent >= 80 && isRepairing) {
                finishRepair();
} else if (isRepairing) {
                throwExperience();
            }
        }
 return true;
    }

private void startRepair() {
isRepairing = true;

savedHoeSlot = mc.player.inventory.currentItem;

 int expBottleSlot = findExpBottles();
if (expBottleSlot != -1) {
mc.player.inventory.currentItem = expBottleSlot;
mc.player.connection.sendPacket(new CHeldItemChangePacket(expBottleSlot));
            moveHoeToOffHand();
        }
    }

private void finishRepair() {
isRepairing = false;

if (savedHoeSlot != -1) {
mc.player.inventory.currentItem = savedHoeSlot;
mc.player.connection.sendPacket(new CHeldItemChangePacket(savedHoeSlot));
            clearOffHand();
        }

savedHoeSlot = -1;
    }

private void throwExperience() {
long now = System.currentTimeMillis();

if (now - lastExpThrowTime < 300) {
 return;
        }

ItemStack mainHand = mc.player.getHeldItemMainhand();
if (mainHand.getItem() == Items.EXPERIENCE_BOTTLE) {
float oldPitch = mc.player.rotationPitch;
mc.player.rotationPitch = 90.0f; // Смотрим вниз
            mc.playerController.processRightClick(mc.player, mc.world, Hand.MAIN_HAND);
mc.player.rotationPitch = oldPitch;
 lastExpThrowTime = now;
        }
    }

private void moveHoeToOffHand() {
if (savedHoeSlot != -1) {
mc.player.connection.sendPacket(new CClickWindowPacket(
mc.player.openContainer.windowId,
savedHoeSlot + 36,
 0,
ClickType.PICKUP,
ItemStack.EMPTY,
mc.player.openContainer.getNextTransactionID(mc.player.inventory)
            ));

mc.player.connection.sendPacket(new CClickWindowPacket(
mc.player.openContainer.windowId,
 45,
 0,
ClickType.PICKUP,
ItemStack.EMPTY,
mc.player.openContainer.getNextTransactionID(mc.player.inventory)
            ));
        }
    }

private void clearOffHand() {
if (savedHoeSlot != -1) {
mc.player.connection.sendPacket(new CClickWindowPacket(
mc.player.openContainer.windowId,
 45,
 0,
ClickType.PICKUP,
ItemStack.EMPTY,
mc.player.openContainer.getNextTransactionID(mc.player.inventory)
            ));

mc.player.connection.sendPacket(new CClickWindowPacket(
mc.player.openContainer.windowId,
savedHoeSlot + 36,
 0,
ClickType.PICKUP,
ItemStack.EMPTY,
mc.player.openContainer.getNextTransactionID(mc.player.inventory)
            ));
        }
    }

private BlockPos findSugarCane() {
List<BlockPos> sugarCanes = new ArrayList<>();
int r = (int) Math.ceil(2);
BlockPos playerPos = mc.player.getPosition();

for (int x = -r; x <= r; x++) {
for (int y = -r; y <= r; y++) {
for (int z = -r; z <= r; z++) {
                    BlockPos pos = playerPos.add(x, y, z);
if (mc.player.getDistanceSq(Vector3d.copyCentered(pos)) <= 2 * 2) {
 if (isValidSugarCane(pos)) {
                            sugarCanes.add(pos);
                        }
                    }
                }
            }
        }

 if (sugarCanes.isEmpty()) {
 return null;
        }

sugarCanes.sort(Comparator.comparingDouble(pos ->
mc.player.getDistanceSq(Vector3d.copyCentered(pos))));

return sugarCanes.get(0);
    }

private boolean isValidSugarCane(BlockPos pos) {
if (pos == null) return false;

BlockState state = mc.world.getBlockState(pos);
if (state.getBlock() != Blocks.SUGAR_CANE) {
 return false;
        }

return mc.world.getBlockState(pos.down()).getBlock() != Blocks.SUGAR_CANE;
    }

private int getSugarCaneHeight(BlockPos basePos) {
if (basePos == null) return 0;

int height = 0;
        BlockPos current = basePos;

while (mc.world.getBlockState(current).getBlock() == Blocks.SUGAR_CANE) {
            height++;
            current = current.up();
        }

 return height;
    }

private void growSugarCane(BlockPos pos) {
BlockRayTraceResult rayTrace = new BlockRayTraceResult(
Vector3d.copyCentered(pos),
Direction.UP,
                pos,
false
        );

mc.player.connection.sendPacket(new CPlayerTryUseItemOnBlockPacket(
Hand.MAIN_HAND,
                rayTrace
        ));

long now = System.currentTimeMillis();
if (now - lastRightClickTime > 200) {
mc.player.connection.sendPacket(new CAnimateHandPacket(Hand.MAIN_HAND));
 lastRightClickTime = now;
        }

isGrowing = true;
    }

private void harvestSugarCane(BlockPos pos) {
if (!isRepairing) {
 int hoeSlot = findBestHoe();
if (hoeSlot != -1 && mc.player.inventory.currentItem != hoeSlot) {
if (oldSlot == -1) {
oldSlot = mc.player.inventory.currentItem;
                }
mc.player.inventory.currentItem = hoeSlot;
mc.player.connection.sendPacket(new CHeldItemChangePacket(hoeSlot));
            }
        }

        BlockPos harvestPos = pos.up();

mc.player.connection.sendPacket(new CPlayerDiggingPacket(
CPlayerDiggingPacket.Action.START_DESTROY_BLOCK,
                harvestPos,
Direction.UP
        ));

mc.player.connection.sendPacket(new CPlayerDiggingPacket(
CPlayerDiggingPacket.Action.STOP_DESTROY_BLOCK,
                harvestPos,
Direction.UP
        ));

mc.player.connection.sendPacket(new CAnimateHandPacket(Hand.MAIN_HAND));

isHarvesting = true;

if (mc.world.getBlockState(harvestPos).getBlock() != Blocks.SUGAR_CANE) {
            BlockPos current = harvestPos.up();
while (mc.world.getBlockState(current).getBlock() == Blocks.SUGAR_CANE) {
mc.player.connection.sendPacket(new CPlayerDiggingPacket(
CPlayerDiggingPacket.Action.START_DESTROY_BLOCK,
                        current,
Direction.UP
                ));
mc.player.connection.sendPacket(new CPlayerDiggingPacket(
CPlayerDiggingPacket.Action.STOP_DESTROY_BLOCK,
                        current,
Direction.UP
                ));
mc.player.connection.sendPacket(new CAnimateHandPacket(Hand.MAIN_HAND));
                current = current.up();
            }

targetSugarCane = null;
isHarvesting = false;
        }
    }

private boolean rotateToBlock(BlockPos pos) {
Vector3d eyePos = mc.player.getEyePosition(mc.getRenderPartialTicks());
Vector3d blockCenter = Vector3d.copyCentered(pos);

        Vector3d dir = blockCenter.subtract(eyePos).normalize();

float yaw = (float) Math.toDegrees(Math.atan2(-dir.x, dir.z));
float pitch = (float) MathHelper.clamp(-Math.toDegrees(Math.atan2(dir.y, Math.hypot(dir.x, dir.z))), -90, 90);

SmoothRotationComponent.update(
 new Rotation(yaw, pitch),
5.0F, 4.0F,
2F, 2F,
1, 3, false);
 return true;
    }

private int findBestHoe() {
int best = -1;
float bestScore = -1f;

for (int i = 0; i < 9; i++) {
ItemStack stack = mc.player.inventory.getStackInSlot(i);
if (stack.getItem() instanceof HoeItem) {
float score = 1000f;

                Item item = stack.getItem();
if (item == Items.NETHERITE_HOE) {
score += 500f;
} else if (item == Items.DIAMOND_HOE) {
score += 400f;
} else if (item == Items.IRON_HOE) {
score += 300f;
} else if (item == Items.STONE_HOE) {
score += 200f;
} else if (item == Items.WOODEN_HOE) {
score += 100f;
                }

score += EnchantmentHelper.getEnchantmentLevel(Enchantments.EFFICIENCY, stack) * 50f;
score += EnchantmentHelper.getEnchantmentLevel(Enchantments.UNBREAKING, stack) * 30f;
score += EnchantmentHelper.getEnchantmentLevel(Enchantments.MENDING, stack) * 40f;

 if (stack.isDamaged()) {
float durabilityPercent = ((float) (stack.getMaxDamage() - stack.getDamage()) / stack.getMaxDamage());
                    score *= durabilityPercent;
                }

 if (score > bestScore) {
                    bestScore = score;
                    best = i;
                }
            }
        }

 return best;
    }

private int findExpBottles() {
for (int i = 0; i < 9; i++) {
ItemStack stack = mc.player.inventory.getStackInSlot(i);
if (stack.getItem() == Items.EXPERIENCE_BOTTLE) {
 return i;
            }
        }
return -1;
    }

private void restoreSlot() {
if (oldSlot != -1 && mc.player != null && !isRepairing) {
mc.player.inventory.currentItem = oldSlot;
mc.player.connection.sendPacket(new CHeldItemChangePacket(oldSlot));
oldSlot = -1;
        }
    }
}
[CODE]
модеры не ебу что с кодом но в интелку норм переноситься
 
Назад
Сверху Снизу