mirror of
https://github.com/MineLittlePony/MineLittlePony.git
synced 2024-12-01 16:27:59 +01:00
Added fillycam
This commit is contained in:
parent
8157655434
commit
f3f980d6c3
9 changed files with 120 additions and 9 deletions
|
@ -0,0 +1,36 @@
|
||||||
|
package com.minelittlepony.client.mixin;
|
||||||
|
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||||
|
|
||||||
|
import com.minelittlepony.MineLittlePony;
|
||||||
|
import com.minelittlepony.pony.IPony;
|
||||||
|
|
||||||
|
import net.minecraft.client.MinecraftClient;
|
||||||
|
import net.minecraft.client.render.Camera;
|
||||||
|
|
||||||
|
@Mixin(Camera.class)
|
||||||
|
public abstract class MixinCamera {
|
||||||
|
|
||||||
|
// cameraDistance;
|
||||||
|
// float field_18721;
|
||||||
|
// prevCameraDistance;
|
||||||
|
// float field_18722;
|
||||||
|
|
||||||
|
@Inject(method = "method_19318(D)D",
|
||||||
|
at = @At("RETURN"),
|
||||||
|
cancellable = true)
|
||||||
|
private void redirectCameraDistance(double initial, CallbackInfoReturnable<Double> info) {
|
||||||
|
double value = info.getReturnValueD();
|
||||||
|
|
||||||
|
IPony pony = MineLittlePony.getInstance().getManager().getPony(MinecraftClient.getInstance().player);
|
||||||
|
|
||||||
|
if (!pony.getRace(false).isHuman()) {
|
||||||
|
value *= pony.getMetadata().getSize().getEyeDistanceFactor();
|
||||||
|
}
|
||||||
|
|
||||||
|
info.setReturnValue(value);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,35 @@
|
||||||
|
package com.minelittlepony.client.mixin;
|
||||||
|
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||||
|
|
||||||
|
import com.minelittlepony.MineLittlePony;
|
||||||
|
import com.minelittlepony.pony.IPony;
|
||||||
|
|
||||||
|
import net.minecraft.entity.EntityPose;
|
||||||
|
import net.minecraft.entity.EntitySize;
|
||||||
|
import net.minecraft.entity.LivingEntity;
|
||||||
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
|
|
||||||
|
@Mixin(PlayerEntity.class)
|
||||||
|
public abstract class MixinPlayerEntity extends LivingEntity {
|
||||||
|
|
||||||
|
private MixinPlayerEntity() {super(null, null);}
|
||||||
|
|
||||||
|
@Inject(method = "getActiveEyeHeight(Lnet/minecraft/entity/EntityPose;Lnet/minecraft/entity/EntitySize;)F",
|
||||||
|
at = @At("RETURN"),
|
||||||
|
cancellable = true)
|
||||||
|
protected void redirectGetActiveEyeHeight(EntityPose pose, EntitySize size, CallbackInfoReturnable<Float> info) {
|
||||||
|
float value = info.getReturnValueF();
|
||||||
|
|
||||||
|
IPony pony = MineLittlePony.getInstance().getManager().getPony((PlayerEntity)(Object)this);
|
||||||
|
|
||||||
|
if (!pony.getRace(false).isHuman()) {
|
||||||
|
value *= pony.getMetadata().getSize().getEyeHeightFactor();
|
||||||
|
}
|
||||||
|
|
||||||
|
info.setReturnValue(value);
|
||||||
|
}
|
||||||
|
}
|
|
@ -35,7 +35,6 @@ import net.minecraft.util.math.Vec3d;
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
import javax.annotation.Nonnull;
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
import javax.annotation.concurrent.Immutable;
|
import javax.annotation.concurrent.Immutable;
|
||||||
|
|
||||||
|
@ -91,7 +90,12 @@ public class Pony extends Touchable<Pony> implements IPony {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public static NativeImage getBufferedImage(@Nonnull Identifier resource) {
|
public static NativeImage getBufferedImage(@Nullable Identifier resource) {
|
||||||
|
|
||||||
|
if (resource == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Resource skin = MinecraftClient.getInstance().getResourceManager().getResource(resource);
|
Resource skin = MinecraftClient.getInstance().getResourceManager().getResource(resource);
|
||||||
NativeImage skinImage = NativeImage.fromInputStream(skin.getInputStream());
|
NativeImage skinImage = NativeImage.fromInputStream(skin.getInputStream());
|
||||||
|
|
|
@ -65,6 +65,10 @@ public class PonyManager implements IPonyManager, ResourceReloadListener, ISkinC
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IPony getPony(PlayerEntity player) {
|
public IPony getPony(PlayerEntity player) {
|
||||||
|
if (player == null || player.getGameProfile() == null) {
|
||||||
|
return getDefaultPony(player.getUuid());
|
||||||
|
}
|
||||||
|
|
||||||
Identifier skin = getSkin(player);
|
Identifier skin = getSkin(player);
|
||||||
UUID uuid = player.getGameProfile().getId();
|
UUID uuid = player.getGameProfile().getId();
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
package com.minelittlepony.client.settings;
|
package com.minelittlepony.client.settings;
|
||||||
|
|
||||||
|
import net.minecraft.client.MinecraftClient;
|
||||||
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
|
|
||||||
import com.minelittlepony.client.render.entities.MobRenderers;
|
import com.minelittlepony.client.render.entities.MobRenderers;
|
||||||
import com.minelittlepony.hdskins.HDSkins;
|
import com.minelittlepony.hdskins.HDSkins;
|
||||||
import com.minelittlepony.settings.PonyConfig;
|
import com.minelittlepony.settings.PonyConfig;
|
||||||
|
@ -20,4 +23,13 @@ public class ClientPonyConfig extends PonyConfig {
|
||||||
|
|
||||||
super.setPonyLevel(ponylevel);
|
super.setPonyLevel(ponylevel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void save() {
|
||||||
|
super.save();
|
||||||
|
PlayerEntity player = MinecraftClient.getInstance().player;
|
||||||
|
if (player != null) {
|
||||||
|
player.refreshSize();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,22 +5,24 @@ import com.minelittlepony.pony.ITriggerPixelMapped;
|
||||||
import com.minelittlepony.settings.PonySettings;
|
import com.minelittlepony.settings.PonySettings;
|
||||||
|
|
||||||
public enum Size implements ITriggerPixelMapped<Size> {
|
public enum Size implements ITriggerPixelMapped<Size> {
|
||||||
TALL (0x764b53, 0.45f, 1.1F),
|
TALL (0x764b53, 0.45f, 1.1F, 1.15F),
|
||||||
BULKY (0x5432ce, 0.5f, 1),
|
BULKY (0x5432ce, 0.5f, 1, 1.05F),
|
||||||
LANKY (0xce5432, 0.45F, 0.85F),
|
LANKY (0xce5432, 0.45F, 0.85F, 0.9F),
|
||||||
NORMAL (0x000000, 0.4f, 0.8F),
|
NORMAL (0x000000, 0.4f, 0.8F, 0.8F),
|
||||||
YEARLING(0xffbe53, 0.4F, 0.6F),
|
YEARLING(0xffbe53, 0.4F, 0.6F, 0.65F),
|
||||||
FOAL (0x53beff, 0.25f, 0.6F);
|
FOAL (0x53beff, 0.25f, 0.6F, 0.5F);
|
||||||
|
|
||||||
private int triggerValue;
|
private int triggerValue;
|
||||||
|
|
||||||
private float shadowSize;
|
private float shadowSize;
|
||||||
private float scale;
|
private float scale;
|
||||||
|
private float camera;
|
||||||
|
|
||||||
Size(int pixel, float shadowSz, float scaleF) {
|
Size(int pixel, float shadowSz, float scaleF, float cameraF) {
|
||||||
triggerValue = pixel;
|
triggerValue = pixel;
|
||||||
shadowSize = shadowSz;
|
shadowSize = shadowSz;
|
||||||
scale = scaleF;
|
scale = scaleF;
|
||||||
|
camera = cameraF;
|
||||||
}
|
}
|
||||||
|
|
||||||
public float getShadowSize() {
|
public float getShadowSize() {
|
||||||
|
@ -31,6 +33,20 @@ public enum Size implements ITriggerPixelMapped<Size> {
|
||||||
return scale * MineLittlePony.getInstance().getConfig().getGlobalScaleFactor();
|
return scale * MineLittlePony.getInstance().getConfig().getGlobalScaleFactor();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public float getEyeHeightFactor() {
|
||||||
|
if (!PonySettings.FILLYCAM.get()) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return camera * MineLittlePony.getInstance().getConfig().getGlobalScaleFactor();
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getEyeDistanceFactor() {
|
||||||
|
if (!PonySettings.FILLYCAM.get()) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return camera * MineLittlePony.getInstance().getConfig().getGlobalScaleFactor();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getTriggerPixel() {
|
public int getTriggerPixel() {
|
||||||
return triggerValue;
|
return triggerValue;
|
||||||
|
|
|
@ -10,6 +10,7 @@ public enum PonySettings implements Setting<Boolean> {
|
||||||
SIZES,
|
SIZES,
|
||||||
SNUZZLES,
|
SNUZZLES,
|
||||||
HD,
|
HD,
|
||||||
|
FILLYCAM,
|
||||||
SHOWSCALE,
|
SHOWSCALE,
|
||||||
FPSMAGIC,
|
FPSMAGIC,
|
||||||
PONYSKULLS,
|
PONYSKULLS,
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
"minelp.options.hd": "Enable MineLP skin server",
|
"minelp.options.hd": "Enable MineLP skin server",
|
||||||
"minelp.options.sizes": "Allow all different sizes of pony",
|
"minelp.options.sizes": "Allow all different sizes of pony",
|
||||||
"minelp.options.snuzzles": "Display snuzzles on ponies",
|
"minelp.options.snuzzles": "Display snuzzles on ponies",
|
||||||
|
"minelp.options.fillycam": "Enable Filly Cam",
|
||||||
"minelp.options.showscale": "Use show-accurate scaling",
|
"minelp.options.showscale": "Use show-accurate scaling",
|
||||||
"minelp.options.fpsmagic": "Ponies use magic in first-person",
|
"minelp.options.fpsmagic": "Ponies use magic in first-person",
|
||||||
"minelp.options.ponyskulls": "Render mob heads as ponies",
|
"minelp.options.ponyskulls": "Render mob heads as ponies",
|
||||||
|
|
|
@ -6,10 +6,12 @@
|
||||||
"compatibilityLevel": "JAVA_8",
|
"compatibilityLevel": "JAVA_8",
|
||||||
"client": [
|
"client": [
|
||||||
"IResizeable",
|
"IResizeable",
|
||||||
|
"MixinCamera",
|
||||||
"MixinDefaultPlayerSkin",
|
"MixinDefaultPlayerSkin",
|
||||||
"MixinFirstPersonRenderer",
|
"MixinFirstPersonRenderer",
|
||||||
"MixinGlStateManager",
|
"MixinGlStateManager",
|
||||||
"MixinItemRenderer",
|
"MixinItemRenderer",
|
||||||
|
"MixinPlayerEntity",
|
||||||
"MixinThreadDownloadImageData"
|
"MixinThreadDownloadImageData"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue