29 lines
1.1 KiB
Java
29 lines
1.1 KiB
Java
package com.thebrokenrail.gulliverreloaded.mixin;
|
|
|
|
import com.thebrokenrail.gulliverreloaded.ScaledEntity;
|
|
import net.fabricmc.api.EnvType;
|
|
import net.fabricmc.api.Environment;
|
|
import net.minecraft.client.render.Camera;
|
|
import net.minecraft.entity.Entity;
|
|
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.Redirect;
|
|
|
|
@SuppressWarnings("unused")
|
|
@Environment(EnvType.CLIENT)
|
|
@Mixin(Camera.class)
|
|
public abstract class MixinCamera {
|
|
@Shadow
|
|
private Entity focusedEntity;
|
|
@Shadow
|
|
protected abstract double clipToSpace(double distance);
|
|
@Shadow
|
|
protected abstract void moveBy(double x, double y, double z);
|
|
|
|
@Redirect(method = "update", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/Camera;clipToSpace(D)D"))
|
|
public double onUpdateClipToSpaceProxy(Camera obj, double distance) {
|
|
float scale = focusedEntity instanceof ScaledEntity ? ((ScaledEntity) focusedEntity).getScale() : 1f;
|
|
return clipToSpace(distance * scale);
|
|
}
|
|
} |