Исходник CrossBowHelper exp 3.1

Начинающий
Статус
Оффлайн
Регистрация
18 Янв 2023
Сообщения
22
Реакции[?]
0
Поинты[?]
0

Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:

  • бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
  • маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
  • приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
  • обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.

Спасибо!

Функция которая само наводится на противника и стреляет в него из арбалета, данная функция работает до 50 блоков сделал там изменение растояния, там нужно добавить ещё моды там на друзей т.д. но думаю пастеры разберутся и схавают это говно

Java:
package fun.relax.functions.impl.combat;

import com.google.common.eventbus.Subscribe;
import fun.relax.functions.api.Category;
import fun.relax.functions.api.Function;
import fun.relax.functions.api.FunctionRegister;
import fun.relax.events.EventUpdate;
import fun.relax.functions.settings.impl.SliderSetting;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.LivingEntity;
import net.minecraft.item.CrossbowItem;
import net.minecraft.item.ItemStack;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.vector.Vector3d;
import net.minecraft.util.Hand;

@FunctionRegister(name = "CrossBowHelper", type = Category.Combat)
public class CrossBowHelper extends Function {
    private final Minecraft mc = Minecraft.getInstance();
    private final SliderSetting attackRange = new SliderSetting("Дистанция атаки", 10.0f, 3.0f, 50.0f, 0.1f);
    public CrossBowHelper() {
        addSettings(attackRange);
    }

    @Subscribe
    public void onUpdate(EventUpdate event) {
        if (isHoldingCrossbow()) {
            LivingEntity target = findTarget();
            if (target != null) {
                updateRotation(target);
                if (isCrossbowCharged()) {
                    shoot();
                }
            }
        }
    }

    private boolean isHoldingCrossbow() {
        ItemStack stack = mc.player.getHeldItem(Hand.MAIN_HAND);
        return stack.getItem() instanceof CrossbowItem;
    }

    private LivingEntity findTarget() {
        double range = attackRange.get();
        LivingEntity closestEntity = null;
        double closestDistance = range;
      
        for (LivingEntity entity : mc.world.getEntitiesWithinAABB(LivingEntity.class, mc.player.getBoundingBox().grow(range))) {
            if (entity != mc.player && entity.isAlive()) {
                double distance = mc.player.getDistance(entity);
                if (distance < closestDistance) {
                    closestDistance = distance;
                    closestEntity = entity;
                }
            }
        }
        return closestEntity;
    }

    private void updateRotation(LivingEntity target) {
        Vector3d targetPos = target.getPositionVec().add(0, target.getEyeHeight() * 0.75, 0);
        Vector3d playerPos = mc.player.getEyePosition(1.0F);
        Vector3d direction = targetPos.subtract(playerPos);

        double distance = MathHelper.sqrt(direction.x * direction.x + direction.z * direction.z);
        double heightDifference = targetPos.y - playerPos.y;

        float yaw = (float) Math.toDegrees(Math.atan2(direction.z, direction.x)) - 90;
        float pitch = (float) (-Math.toDegrees(Math.atan2(heightDifference, distance)));

        mc.player.rotationYaw = yaw;
        mc.player.rotationPitch = pitch;
    }

    private boolean isCrossbowCharged() {
        ItemStack stack = mc.player.getHeldItem(Hand.MAIN_HAND);
        return stack.getItem() instanceof CrossbowItem && CrossbowItem.isCharged(stack);
    }

    private void shoot() {
        ItemStack stack = mc.player.getHeldItem(Hand.MAIN_HAND);
        if (CrossbowItem.isCharged(stack)) {
            mc.playerController.processRightClick(mc.player, mc.world, Hand.MAIN_HAND);
        }
    }
}
 
Начинающий
Статус
Оффлайн
Регистрация
18 Янв 2023
Сообщения
22
Реакции[?]
0
Поинты[?]
0
Начинающий
Статус
Оффлайн
Регистрация
14 Апр 2023
Сообщения
538
Реакции[?]
5
Поинты[?]
2K
Функция которая само наводится на противника и стреляет в него из арбалета, данная функция работает до 50 блоков сделал там изменение растояния, там нужно добавить ещё моды там на друзей т.д. но думаю пастеры разберутся и схавают это говно

Код:
package ru.wiksi.implement.features.modules.combat;

import com.google.common.eventbus.Subscribe;
import net.minecraft.entity.LivingEntity;
import net.minecraft.item.CrossbowItem;
import net.minecraft.item.ItemStack;
import net.minecraft.util.math.BlockRayTraceResult;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.RayTraceResult;
import ru.wiksi.api.system.modules.Function;
import ru.wiksi.api.system.modules.ModColor;
import ru.wiksi.api.system.modules.ModRegister;
import ru.wiksi.api.utils.render.ColorUtils;
import ru.wiksi.api.utils.render.DisplayUtils;
import ru.wiksi.api.utils.render.font.Fonts;
import ru.wiksi.event.events.EventDisplay;
import ru.wiksi.event.events.EventUpdate;
import ru.wiksi.implement.settings.impl.BooleanSetting;
import ru.wiksi.api.system.modules.Category;

@ModRegister(name = "CrossBowHelper", server = ModColor.NO, category = Category.Fight)
public class CrossBowHelper extends Function {

    public BooleanSetting crosshair = new BooleanSetting("Прицел", true);
    public BooleanSetting autoCharge = new BooleanSetting("Автоматически заряжать", true);

    public CrossBowHelper() {
        addSettings(autoCharge, crosshair);
    }

    private void handleUpdateEvent(EventUpdate eventUpdate) {

        if (mc.player.inventory.getCurrentItem().getItem() instanceof CrossbowItem) {

            ItemStack itemStack = mc.player.getActiveItemStack();

            float f = (float)(itemStack.getUseDuration() - mc.player.getItemInUseCount()) / (float) CrossbowItem.getChargeTime(itemStack);

            float charge = MathHelper.clamp(f, 0.0f, 1.0f);

            if (!CrossbowItem.isCharged(mc.player.getHeldItemMainhand()) && charge != 1.0f) {
                mc.gameSettings.keyBindUseItem.setPressed(true);
            } else {
                mc.gameSettings.keyBindUseItem.setPressed(false);
            }
        }
    }

    @Subscribe
    public void aa(EventUpdate e) {
        if (autoCharge.get()) {
            handleUpdateEvent(e);
        }
    }

    @Subscribe
    public void onDisplay(EventDisplay e) {
        if (mc.world != null || e.getType() != EventDisplay.Type.POST) {

            ItemStack itemStack = mc.player.getActiveItemStack();

            if (crosshair.get()) {
                if (CrossbowItem.isCharged(mc.player.getHeldItemMainhand())) {
                    float x = mw.getScaledWidth() / 2;
                    float y = mw.getScaledHeight() / 2;

                    DisplayUtils.drawRectTwo(x - 1, 0, 1, mw.getScaledHeight(), ColorUtils.rgba(45, 38, 53, 255));

                    int dst = 10;
                    int ii = 5;
                    for (int i = 0; i <= 4; i++) {

                        DisplayUtils.drawRectTwo(x - 5, y + ii, 10, 1, -1);

                        Fonts.montserrat.drawCenteredText(e.getMatrixStack(), String.valueOf(dst), x - 5 - 5, y + ii - Fonts.montserrat.getHeight(5) / 2, ColorUtils.rgba(200, 50, 50, 1), 5, 0.07f);

                        ii += 5;
                        dst += 10;

                    }

                    BlockRayTraceResult result;

                    result = (BlockRayTraceResult) mc.player.pick(50, 1, false);
                    if (result.getType() == RayTraceResult.Type.MISS) result = null;
                    if (result != null)
                        Fonts.sB.drawText(e.getMatrixStack(), String.format("%.0f", mc.player.getDistance(result.getPos())), x + 10, y - Fonts.montserrat.getHeight(7) / 2, -1, 7, 0.07f);
                }
            }

            float x, y;
            x = mw.getScaledWidth() / 2 - 20;
            y = mw.getScaledHeight() / 2 - 10 - (Fonts.montserrat.getHeight(7) / 2) - 1;

            LivingEntity livingEntity = mc.player;

            float f = (float)(itemStack.getUseDuration() - livingEntity.getItemInUseCount()) / (float) CrossbowItem.getChargeTime(itemStack);

            float charge = MathHelper.clamp(f, 0.0f, 1.0f);
            int color = charge <= 0.2f ? ColorUtils.rgba(200, 50, 50, 1) : (charge > 0.2f && charge < 0.6f) ? ColorUtils.rgba(200, 200, 200, 1) : ColorUtils.rgba(50, 200, 50, 1);

                if (itemStack.getItem() instanceof CrossbowItem) {
                    DisplayUtils.drawRectTwo(x - (Fonts.montserrat.getWidth((String.format("%.0f", charge * 100) + "%"), 7, 0.07f) / 2) - 0.5f, y + 10 - 0.5f,
                            (Fonts.montserrat.getWidth((String.format("%.0f", charge * 100) + "%"), 7, 0.07f) + 2.0f), Fonts.montserrat.getHeight(7) + 1, ColorUtils.rgba(0, 0, 0, 100));

                    Fonts.montserrat.drawCenteredText(e.getMatrixStack(), (String.format("%.0f", charge * 100) + "%"), x, y + 10, color, 7, 0.07f);
                }
            }
        }
    }
если объеденить и добавить BooleanSetting "Автоматически стрелять" выйдет хорошо
 
Начинающий
Статус
Оффлайн
Регистрация
18 Янв 2023
Сообщения
22
Реакции[?]
0
Поинты[?]
0
Начинающий
Статус
Оффлайн
Регистрация
9 Май 2024
Сообщения
141
Реакции[?]
3
Поинты[?]
3K
Сверху Снизу