Часть функционала CameraUtils | 1.21.8 Fabric

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
14 Дек 2022
Сообщения
118
Реакции
2
Выберите загрузчик игры
  1. Fabric
Данная функция даёт возможность натсроить камеру через f5

Функция:

code:
Expand Collapse Copy
package fun.Nexgen.function.impl.render;

import fun.Nexgen.function.api.Category;
import fun.Nexgen.function.api.Function;
import fun.Nexgen.function.settings.impl.BooleanSetting;
import fun.Nexgen.function.settings.impl.NumberSetting;

public class CameraUtils extends Function {

    public final BooleanSetting through = new BooleanSetting("Камера через стенки", true);
    public final BooleanSetting customDist = new BooleanSetting("Дистанция", true);
    public final NumberSetting range = new NumberSetting("Дистанция", 4f, 0f, 7f, 0.05f, customDist::getValue);

    public CameraUtils() {
        super("CameraUtils", Category.Render, "Настройка камеры в F5");
    }

    public float getDistanceValue() {
        if (customDist.getValue()) return range.getValue();
        return 3.5f;
    }
}

mixn

CameraMixin:
Expand Collapse Copy
package fun.Nexgen.api.mixins;

import fun.Nexgen.NexgenClient;
import fun.Nexgen.function.impl.render.CameraUtils;
import fun.Nexgen.function.impl.player.FreeCam;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.option.Perspective;
import net.minecraft.client.render.Camera;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.ModifyArgs;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import org.spongepowered.asm.mixin.injection.invoke.arg.Args;

@Mixin(Camera.class)
public abstract class CameraMixin {

    @Shadow
    protected abstract float clipToSpace(float desiredCameraDistance);

    @ModifyArgs(method = "update", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/Camera;moveBy(FFF)V", ordinal = 0))
    public void update2(Args args) {
        CameraUtils cu = NexgenClient.getInstance().getModuleManager().getModule(CameraUtils.class);
        if (cu == null || !cu.isToggled() || !cu.through.getValue()) return;
        Perspective p = MinecraftClient.getInstance().options.getPerspective();
        if (p == Perspective.FIRST_PERSON) return;
        float dist = cu.getDistanceValue();
        args.set(0, -clipToSpace(dist));
    }

    @Inject(method = "clipToSpace", at = @At("HEAD"), cancellable = true)
    public void clipToSpace(float f, CallbackInfoReturnable<Float> cir) {
        CameraUtils cu = NexgenClient.getInstance().getModuleManager().getModule(CameraUtils.class);
        if (cu == null || !cu.isToggled() || !cu.through.getValue()) return;
        Perspective p = MinecraftClient.getInstance().options.getPerspective();
        if (p == Perspective.FIRST_PERSON) return;
        cir.setReturnValue(cu.getDistanceValue());
    }


    @ModifyArgs(method = "update", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/Camera;setRotation(FF)V"))
    public void setRotationHook(Args args) {
        FreeCam fc = NexgenClient.getInstance().getModuleManager().getModule(FreeCam.class);
        if (fc == null || !fc.isToggled()) return;
        float td = MinecraftClient.getInstance().getRenderTickCounter().getTickDelta(false);
        args.setAll(fc.getFakeYaw(td), fc.getFakePitch(td));
    }

    @ModifyArgs(method = "update", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/Camera;setPos(DDD)V"))
    public void setPosHook(Args args) {
        FreeCam fc = NexgenClient.getInstance().getModuleManager().getModule(FreeCam.class);
        if (fc == null || !fc.isToggled()) return;
        float td = MinecraftClient.getInstance().getRenderTickCounter().getTickDelta(false);
        args.setAll(fc.getFakeX(td), fc.getFakeY(td), fc.getFakeZ(td));
    }
}
 
Данная функция даёт возможность натсроить камеру через f5

Функция:

code:
Expand Collapse Copy
package fun.Nexgen.function.impl.render;

import fun.Nexgen.function.api.Category;
import fun.Nexgen.function.api.Function;
import fun.Nexgen.function.settings.impl.BooleanSetting;
import fun.Nexgen.function.settings.impl.NumberSetting;

public class CameraUtils extends Function {

    public final BooleanSetting through = new BooleanSetting("Камера через стенки", true);
    public final BooleanSetting customDist = new BooleanSetting("Дистанция", true);
    public final NumberSetting range = new NumberSetting("Дистанция", 4f, 0f, 7f, 0.05f, customDist::getValue);

    public CameraUtils() {
        super("CameraUtils", Category.Render, "Настройка камеры в F5");
    }

    public float getDistanceValue() {
        if (customDist.getValue()) return range.getValue();
        return 3.5f;
    }
}

mixn

CameraMixin:
Expand Collapse Copy
package fun.Nexgen.api.mixins;

import fun.Nexgen.NexgenClient;
import fun.Nexgen.function.impl.render.CameraUtils;
import fun.Nexgen.function.impl.player.FreeCam;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.option.Perspective;
import net.minecraft.client.render.Camera;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.ModifyArgs;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import org.spongepowered.asm.mixin.injection.invoke.arg.Args;

@Mixin(Camera.class)
public abstract class CameraMixin {

    @Shadow
    protected abstract float clipToSpace(float desiredCameraDistance);

    @ModifyArgs(method = "update", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/Camera;moveBy(FFF)V", ordinal = 0))
    public void update2(Args args) {
        CameraUtils cu = NexgenClient.getInstance().getModuleManager().getModule(CameraUtils.class);
        if (cu == null || !cu.isToggled() || !cu.through.getValue()) return;
        Perspective p = MinecraftClient.getInstance().options.getPerspective();
        if (p == Perspective.FIRST_PERSON) return;
        float dist = cu.getDistanceValue();
        args.set(0, -clipToSpace(dist));
    }

    @Inject(method = "clipToSpace", at = @At("HEAD"), cancellable = true)
    public void clipToSpace(float f, CallbackInfoReturnable<Float> cir) {
        CameraUtils cu = NexgenClient.getInstance().getModuleManager().getModule(CameraUtils.class);
        if (cu == null || !cu.isToggled() || !cu.through.getValue()) return;
        Perspective p = MinecraftClient.getInstance().options.getPerspective();
        if (p == Perspective.FIRST_PERSON) return;
        cir.setReturnValue(cu.getDistanceValue());
    }


    @ModifyArgs(method = "update", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/Camera;setRotation(FF)V"))
    public void setRotationHook(Args args) {
        FreeCam fc = NexgenClient.getInstance().getModuleManager().getModule(FreeCam.class);
        if (fc == null || !fc.isToggled()) return;
        float td = MinecraftClient.getInstance().getRenderTickCounter().getTickDelta(false);
        args.setAll(fc.getFakeYaw(td), fc.getFakePitch(td));
    }

    @ModifyArgs(method = "update", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/Camera;setPos(DDD)V"))
    public void setPosHook(Args args) {
        FreeCam fc = NexgenClient.getInstance().getModuleManager().getModule(FreeCam.class);
        if (fc == null || !fc.isToggled()) return;
        float td = MinecraftClient.getInstance().getRenderTickCounter().getTickDelta(false);
        args.setAll(fc.getFakeX(td), fc.getFakeY(td), fc.getFakeZ(td));
    }
}
спащено с минседа
 
Назад
Сверху Снизу