From 9e3855ebd62ebae77fc3d65a50f54f8daa062c61 Mon Sep 17 00:00:00 2001 From: tr7zw Date: Fri, 15 Nov 2024 01:35:48 +0100 Subject: [PATCH] Readd firstPersonPixelScaling. Fix #196 --- .github/workflows/build.yml | 2 +- .../tr7zw/skinlayers/api/OffsetProvider.java | 32 +++++++++++++------ .../config/ConfigScreenProvider.java | 2 +- .../skinlayers/mixin/PlayerRendererMixin.java | 8 ++--- 4 files changed, 28 insertions(+), 16 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b5f512c..aa6f949 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -17,7 +17,7 @@ jobs: java-version: 21 # to cache gradle files - name: Setup Gradle - uses: gradle/actions/setup-gradle@v3 + uses: gradle/actions/setup-gradle@v4 with: gradle-home-cache-cleanup: true dependency-graph: generate-and-submit diff --git a/src/main/java/dev/tr7zw/skinlayers/api/OffsetProvider.java b/src/main/java/dev/tr7zw/skinlayers/api/OffsetProvider.java index 10bdb69..38df897 100644 --- a/src/main/java/dev/tr7zw/skinlayers/api/OffsetProvider.java +++ b/src/main/java/dev/tr7zw/skinlayers/api/OffsetProvider.java @@ -8,20 +8,32 @@ public interface OffsetProvider { public void applyOffset(PoseStack stack, Mesh mesh); - public final static OffsetProvider HEAD = createVanilla(Shape.HEAD, false); - public final static OffsetProvider LEFT_LEG = createVanilla(Shape.LEGS, false); - public final static OffsetProvider RIGHT_LEG = createVanilla(Shape.LEGS, false); - public final static OffsetProvider LEFT_ARM = createVanilla(Shape.ARMS, false); - public final static OffsetProvider LEFT_ARM_SLIM = createVanilla(Shape.ARMS_SLIM, false); - public final static OffsetProvider RIGHT_ARM = createVanilla(Shape.ARMS, true); - public final static OffsetProvider RIGHT_ARM_SLIM = createVanilla(Shape.ARMS_SLIM, true); - public final static OffsetProvider BODY = createVanilla(Shape.BODY, false); - - private static OffsetProvider createVanilla(Shape shape, boolean mirrored) { + public final static OffsetProvider HEAD = createVanilla(Shape.HEAD); + public final static OffsetProvider LEFT_LEG = createVanilla(Shape.LEGS); + public final static OffsetProvider RIGHT_LEG = createVanilla(Shape.LEGS); + public final static OffsetProvider LEFT_ARM = createVanilla(Shape.ARMS); + public final static OffsetProvider LEFT_ARM_SLIM = createVanilla(Shape.ARMS_SLIM); + public final static OffsetProvider RIGHT_ARM = createVanilla(Shape.ARMS, true, false); + public final static OffsetProvider RIGHT_ARM_SLIM = createVanilla(Shape.ARMS_SLIM, true, false); + public final static OffsetProvider FIRSTPERSON_LEFT_ARM = createVanilla(Shape.ARMS, false, true); + public final static OffsetProvider FIRSTPERSON_LEFT_ARM_SLIM = createVanilla(Shape.ARMS_SLIM, false, true); + public final static OffsetProvider FIRSTPERSON_RIGHT_ARM = createVanilla(Shape.ARMS, true, true); + public final static OffsetProvider FIRSTPERSON_RIGHT_ARM_SLIM = createVanilla(Shape.ARMS_SLIM, true, true); + public final static OffsetProvider BODY = createVanilla(Shape.BODY); + + private static OffsetProvider createVanilla(Shape shape) { + return createVanilla(shape, false, false); + } + + private static OffsetProvider createVanilla(Shape shape, boolean mirrored, boolean firstperson) { return (stack, mesh) -> { float pixelScaling = SkinLayersModBase.config.baseVoxelSize; float heightScaling = 1.035f; float widthScaling = SkinLayersModBase.config.baseVoxelSize; + if (firstperson) { + pixelScaling = SkinLayersModBase.config.firstPersonPixelScaling; + widthScaling = SkinLayersModBase.config.firstPersonPixelScaling; + } float x = 0; float y = 0; diff --git a/src/main/java/dev/tr7zw/skinlayers/config/ConfigScreenProvider.java b/src/main/java/dev/tr7zw/skinlayers/config/ConfigScreenProvider.java index eae7667..06d2b76 100644 --- a/src/main/java/dev/tr7zw/skinlayers/config/ConfigScreenProvider.java +++ b/src/main/java/dev/tr7zw/skinlayers/config/ConfigScreenProvider.java @@ -73,7 +73,7 @@ public void initialize() { (b) -> config.fastRender = b)); options.add(getOnOffOption("text.skinlayers.compatibilityMode.enable", () -> config.compatibilityMode, (b) -> config.compatibilityMode = b)); - options.add(getDoubleOption("text.skinlayers.firstperson.voxelsize", 1.02f, 1.2f, 0.001f, + options.add(getDoubleOption("text.skinlayers.firstperson.voxelsize", 1.02f, 1.3f, 0.001f, () -> (double) config.firstPersonPixelScaling, (i) -> { config.firstPersonPixelScaling = i.floatValue(); })); diff --git a/src/main/java/dev/tr7zw/skinlayers/mixin/PlayerRendererMixin.java b/src/main/java/dev/tr7zw/skinlayers/mixin/PlayerRendererMixin.java index 0efb360..bc4ec35 100644 --- a/src/main/java/dev/tr7zw/skinlayers/mixin/PlayerRendererMixin.java +++ b/src/main/java/dev/tr7zw/skinlayers/mixin/PlayerRendererMixin.java @@ -43,7 +43,7 @@ @Mixin(PlayerRenderer.class) public abstract class PlayerRendererMixin -// spotless:off + // spotless:off //#if MC >= 12102 extends LivingEntityRenderer { //#else @@ -196,7 +196,7 @@ public void extractRenderState(AbstractClientPlayer abstractClientPlayer, Player // spotless:on @Inject(method = "renderHand", at = @At("HEAD")) -// spotless:off + // spotless:off //#if MC >= 12102 private void renderHandStart(PoseStack poseStack, MultiBufferSource multiBufferSource, int i, ResourceLocation resourceLocation, ModelPart arm, boolean bl, CallbackInfo info) { @@ -224,12 +224,12 @@ private void renderHandStart(PoseStack poseStack, MultiBufferSource multiBufferS if (arm == getModel().leftArm) { if (SkinLayersModBase.config.enableLeftSleeve) { ((ModelPartInjector) (Object) sleeve).setInjectedMesh(settings.getLeftArmMesh(), - slim ? OffsetProvider.LEFT_ARM_SLIM : OffsetProvider.LEFT_ARM); + slim ? OffsetProvider.FIRSTPERSON_LEFT_ARM_SLIM : OffsetProvider.FIRSTPERSON_LEFT_ARM); } } else { if (SkinLayersModBase.config.enableRightSleeve) { ((ModelPartInjector) (Object) sleeve).setInjectedMesh(settings.getRightArmMesh(), - slim ? OffsetProvider.RIGHT_ARM_SLIM : OffsetProvider.RIGHT_ARM); + slim ? OffsetProvider.FIRSTPERSON_RIGHT_ARM_SLIM : OffsetProvider.FIRSTPERSON_RIGHT_ARM); } } }