Визуальная часть Crosshair | 3.1 ready

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
14 Янв 2024
Сообщения
87
Реакции
0
Выберите загрузчик игры
  1. Fabric

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

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

Спасибо!

сделал прицел с норм настройками, нигде еще не видел такого

ss
Пожалуйста, авторизуйтесь для просмотра ссылки.


Java:
Expand Collapse Copy
package wtf.dart.functions.impl.render;

import com.google.common.eventbus.Subscribe;
import wtf.dart.events.EventDisplay;
import wtf.dart.functions.api.Category;
import wtf.dart.functions.api.Function;
import wtf.dart.functions.api.FunctionRegister;
import wtf.dart.functions.settings.impl.BooleanSetting;
import wtf.dart.functions.settings.impl.ModeSetting;
import wtf.dart.functions.settings.impl.SliderSetting;
import wtf.dart.utils.render.DisplayUtils;
import net.minecraft.client.settings.PointOfView;

import java.awt.*;

@FunctionRegister(name = "Crosshair", type = Category.Render, description = "Добавляет кастомный прицел")
public class Crosshair extends Function {

    private final ModeSetting crosshairType = new ModeSetting("Тип прицела", "Обычный", "Обычный", "T-образный");
    private final BooleanSetting showOutline = new BooleanSetting("Обводка", true);
    private final BooleanSetting dynamicGap = new BooleanSetting("Динамический зазор", true);
    private final BooleanSetting highlightTarget = new BooleanSetting("Подсветка цели", true);

    private final SliderSetting thickness = new SliderSetting("Толщина", 1.0f, 0.5f, 5.0f, 0.1f);
    private final SliderSetting length = new SliderSetting("Длина", 3.0f, 1.0f, 10.0f, 0.5f);
    private final SliderSetting baseGap = new SliderSetting("Базовый зазор", 2.0f, 0.0f, 10.0f, 0.5f);
    private final SliderSetting maxGapIncrease = new SliderSetting("Увеличение зазора", 8.0f, 0.0f, 15.0f, 0.5f);

    private final int outlineColor = Color.BLACK.getRGB();
    private final int entityColor = Color.RED.getRGB();

    public Crosshair() {
        addSettings(crosshairType, showOutline, dynamicGap, highlightTarget,
                thickness,
                length, baseGap,
                maxGapIncrease);
    }

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

        float x = mc.getMainWindow().getScaledWidth() / 2f;
        float y = mc.getMainWindow().getScaledHeight() / 2f;

        if (mc.gameSettings.getPointOfView() != PointOfView.FIRST_PERSON) return;

        float thicknessValue = thickness.get();
        float lengthValue = length.get();
        float baseGapValue = baseGap.get();
        float maxGapIncreaseValue = maxGapIncrease.get();

        boolean useDynamicGap = dynamicGap.get();
        boolean shouldHighlight = highlightTarget.get();
        boolean shouldShowOutline = showOutline.get();
        boolean isTCrosshair = crosshairType.get().equals("T-образный");

        float cooldown = useDynamicGap ? (1 - mc.player.getCooledAttackStrength(0)) : 0;
        float gap = baseGapValue + (useDynamicGap ? maxGapIncreaseValue * cooldown : 0);

        int color = (shouldHighlight && mc.pointedEntity != null) ? entityColor : -1;

        if (isTCrosshair) {
            if (shouldShowOutline) {
                drawOutlined(x - lengthValue, y - thicknessValue/2, lengthValue * 2, thicknessValue, color);
                drawOutlined(x - thicknessValue/2, y, thicknessValue, lengthValue + gap, color);
            } else {
                DisplayUtils.drawRectW(x - lengthValue, y - thicknessValue/2, lengthValue * 2, thicknessValue, color);
                DisplayUtils.drawRectW(x - thicknessValue/2, y, thicknessValue, lengthValue + gap, color);
            }
        } else {
            if (shouldShowOutline) {
                drawOutlined(x - thicknessValue / 2, y - gap - lengthValue, thicknessValue, lengthValue, color);
                drawOutlined(x - thicknessValue / 2, y + gap, thicknessValue, lengthValue, color);
                drawOutlined(x - gap - lengthValue, y - thicknessValue / 2, lengthValue, thicknessValue, color);
                drawOutlined(x + gap, y - thicknessValue / 2, lengthValue, thicknessValue, color);
            } else {
                DisplayUtils.drawRectW(x - thicknessValue / 2, y - gap - lengthValue, thicknessValue, lengthValue, color);
                DisplayUtils.drawRectW(x - thicknessValue / 2, y + gap, thicknessValue, lengthValue, color);
                DisplayUtils.drawRectW(x - gap - lengthValue, y - thicknessValue / 2, lengthValue, thicknessValue, color);
                DisplayUtils.drawRectW(x + gap, y - thicknessValue / 2, lengthValue, thicknessValue, color);
            }
        }
    }

    private void drawOutlined(
            final float x,
            final float y,
            final float w,
            final float h,
            final int hex
    ) {
        DisplayUtils.drawRectW(x - 0.5, y - 0.5, w + 1, h + 1, outlineColor);
        DisplayUtils.drawRectW(x, y, w, h, hex);
    }
}

жду оценку в комментарии :seemsgood:
 
примите уже
 
Назад
Сверху Снизу