Skip to content

Commit

Permalink
fix: QOL changes
Browse files Browse the repository at this point in the history
  • Loading branch information
IMB11 committed Aug 21, 2024
1 parent 2a303e8 commit 42d720c
Show file tree
Hide file tree
Showing 11 changed files with 108 additions and 24 deletions.
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ if (stonecutter.current.active) { // run configs for non-active version would be
}

loom {
accessWidenerPath = getRootProject().file("src/main/resources/skinshuffle.accesswidener")
accessWidenerPath = getRootProject().file("src/main/resources/aw/" + stonecutter.current.version + ".accesswidener")
}

dependencies {
Expand All @@ -65,7 +65,7 @@ dependencies {
include implementation('com.konghq:unirest-java:3.11.09:standalone')

include modImplementation("dev.lambdaurora:spruceui:${property('deps.spruceui')}")
include modImplementation("dev.isxander:yet-another-config-lib:${property('deps.yacl')}")
modImplementation(include("dev.isxander:yet-another-config-lib:3.5.0+${stonecutter.current.version}-fabric"))

include implementation("org.jsoup:jsoup:1.16.1")
include implementation("org.mineskin:java-client:1.2.4-SNAPSHOT")
Expand Down
4 changes: 2 additions & 2 deletions settings.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@ pluginManagement {
url = 'https://maven.fabricmc.net/'
}
maven {
url = "https://maven.kikugie.dev/releases"
url = "https://maven.kikugie.dev/snapshots"
}
gradlePluginPortal()
}
}

plugins {
id "dev.kikugie.stonecutter" version "0.4.1"
id "dev.kikugie.stonecutter" version "0.5-alpha.4"
}

stonecutter {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
package com.mineblock11.skinshuffle.client.gui;

import com.mineblock11.skinshuffle.SkinShuffle;
import com.mineblock11.skinshuffle.client.config.SkinPresetManager;
import com.mineblock11.skinshuffle.client.SkinShuffleClient;import com.mineblock11.skinshuffle.client.config.SkinPresetManager;
import com.mineblock11.skinshuffle.client.config.SkinShuffleConfig;
import com.mineblock11.skinshuffle.client.gui.cursed.GuiEntityRenderer;
import com.mineblock11.skinshuffle.client.gui.widgets.IconButtonWidget;
Expand Down Expand Up @@ -281,13 +281,23 @@ public void render(DrawContext graphics, int mouseX, int mouseY, float delta) {
rotation = getEntityRotation() * SkinShuffleConfig.get().rotationMultiplier;
}

if (!this.preset.getSkin().isLoading()) {
if (!this.preset.getSkin().isLoading() && !this.skinSourceTab.loading) {
graphics.getMatrices().push();
GuiEntityRenderer.drawEntity(
graphics.getMatrices(), entityX, entityY, previewSpanY / 10 * 8,
rotation, followX, followY, this.preset.getSkin(), renderStyle
);
graphics.getMatrices().pop();
} else {
var txt = Text.translatable("skinshuffle.edit.loading");
int textWidth = this.textRenderer.getWidth(txt);
float totalDeltaTick = SkinShuffleClient.TOTAL_TICK_DELTA * 5f;
float hue = (totalDeltaTick % 360) / 360;
float saturation = 0.75f;
float lightness = 1f;
int color = java.awt.Color.HSBtoRGB(hue, saturation, lightness);
color = (color & 0x00FFFFFF) | 0xFF000000;
graphics.drawTextWithShadow(this.textRenderer, txt, previewCenterX - (textWidth / 2), previewCenterY - (this.textRenderer.fontHeight), color);
}
} else {
// We call getTexture() anyway to make sure the texture is being loaded in the background.
Expand Down Expand Up @@ -336,6 +346,7 @@ private class SkinSourceTab extends GridScreenTab {
public PresetEditScreen.SourceType currentSourceType;
private final CyclingButtonWidget<String> skinModelButton;
private final ButtonWidget loadButton;
private boolean loading = false;

private SkinSourceTab() {
super(Text.translatable("skinshuffle.edit.source.title"));
Expand Down Expand Up @@ -434,6 +445,7 @@ public int getHeight() {
}

private void loadSkin() {
this.loading = true;
String skinSource = textFieldWidget.getText();
String model = skinModelButton.getValue();

Expand All @@ -447,15 +459,15 @@ private void loadSkin() {
default -> Skin.randomDefaultSkin();
};

preset.setSkin(skin);
skin.getTexture();
CompletableFuture.runAsync(() -> {
preset.setSkin(skin.saveToConfig());
skin.getTexture();
while (preset.getSkin().isLoading()) {
Thread.onSpinWait();
}
this.loading = false;
}, Util.getIoWorkerExecutor());
}

CompletableFuture.runAsync(() -> {
while (preset.getSkin().isLoading()) {
Thread.onSpinWait();
}
}, Util.getIoWorkerExecutor());
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import com.mineblock11.skinshuffle.client.config.SkinShuffleConfig;
import com.mineblock11.skinshuffle.client.skin.Skin;
import com.mineblock11.skinshuffle.compat.ETFCompat;
import com.mojang.authlib.minecraft.MinecraftProfileTexture;
import com.mojang.blaze3d.systems.RenderSystem;
import net.fabricmc.loader.api.FabricLoader;
import net.minecraft.client.MinecraftClient;
Expand Down Expand Up @@ -61,17 +62,17 @@ public static void drawEntity(MatrixStack matrices, int x, int y, int size, floa
}

private static void setupModelViewStack() {
/*? if >=1.20.5 {*/
//? if >=1.20.5 {
Matrix4fStack modelViewStack = RenderSystem.getModelViewStack();
modelViewStack.pushMatrix();
modelViewStack.translate(0.0f, 0.0f, 1000.0f);
RenderSystem.applyModelViewMatrix();
/*?} else {*/
//?} else {
/*MatrixStack modelViewStack = RenderSystem.getModelViewStack();
modelViewStack.push();
modelViewStack.translate(0.0, 0.0, 1000.0);
RenderSystem.applyModelViewMatrix();*/
/*?}*/
RenderSystem.applyModelViewMatrix();
*///?}
}

private static void setupMatrices(MatrixStack matrices, int x, int y, int size, Quaternionf entityRotation) {
Expand All @@ -85,8 +86,8 @@ private static void setupMatrices(MatrixStack matrices, int x, int y, int size,
}

private static void renderEntity(MatrixStack matrices, float yaw, float pitch, Skin skin, float totalTickDelta) {
var modelData = PlayerEntityModel.getTexturedModelData(Dilation.NONE, false);
NoEntityPlayerModel model = new NoEntityPlayerModel(TexturedModelData.of(modelData, 64, 64).createModel(), false);
var modelData = PlayerEntityModel.getTexturedModelData(Dilation.NONE, skin.getModel().equals("slim"));
NoEntityPlayerModel model = new NoEntityPlayerModel(TexturedModelData.of(modelData, 64, 64).createModel(), skin.getModel().equals("slim"));

model.swingArmsGently(totalTickDelta);
model.setHeadPos(yaw, pitch);
Expand All @@ -102,14 +103,29 @@ private static void renderEntity(MatrixStack matrices, float yaw, float pitch, S
vertexConsumers.getBuffer(RenderLayer.getEntityTranslucent(skin.getTexture())),
0,
OverlayTexture.DEFAULT_UV,
0xFFFFFFFF);
//? if >=1.21 {
0xFFFFFFFF
//?} else {
/*1f, 1f, 1f, 1f
*///?}
);

//? if =1.20.1 {
/*MinecraftClient client = MinecraftClient.getInstance();
var hasCape = client.getSkinProvider().getTextures(client.getSession().getProfile()).containsKey(MinecraftProfileTexture.Type.CAPE);
if (hasCape && SkinShuffleConfig.get().showCapeInPreview) {
*///?} else {
if (skin.getSkinTextures().capeTexture() != null && SkinShuffleConfig.get().showCapeInPreview) {
//?}
matrices.push();
matrices.translate(0.0F, 0.0F, 0.2F);
// matrices.multiply(new Quaternionf().rotateY(180F));
model.renderCape(
matrices,
//? if !=1.20.1 {
vertexConsumers.getBuffer(RenderLayer.getEntityTranslucent(skin.getSkinTextures().capeTexture())),
//?} else {
/*vertexConsumers.getBuffer(RenderLayer.getEntityTranslucentCull(client.getSkinProvider().loadSkin(client.getSkinProvider().getTextures(client.getSession().getProfile()).get(MinecraftProfileTexture.Type.CAPE), MinecraftProfileTexture.Type.CAPE))),
*///?}
0,
OverlayTexture.DEFAULT_UV
);
Expand All @@ -124,9 +140,15 @@ private static void cleanupMatrices(MatrixStack matrices) {
}

private static void cleanupModelViewStack() {
//? if >=1.20.5 {
Matrix4fStack modelViewStack = RenderSystem.getModelViewStack();
modelViewStack.popMatrix();
RenderSystem.applyModelViewMatrix();
//?} else {
/*MatrixStack modelViewStack = RenderSystem.getModelViewStack();
modelViewStack.pop();
RenderSystem.applyModelViewMatrix();
*///?}
}

public static class NoEntityPlayerModel extends PlayerEntityModel {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,10 @@
public class MinecraftClientMixin {
@Inject(method = "render", at = @At("HEAD"))
public void render(boolean tick, CallbackInfo ci) {
//? if >=1.21 {
SkinShuffleClient.TOTAL_TICK_DELTA += MinecraftClient.getInstance().getRenderTickCounter().getTickDelta(true);
//?} else {
/*SkinShuffleClient.TOTAL_TICK_DELTA += MinecraftClient.getInstance().getTickDelta();
*///?}
}
}
3 changes: 2 additions & 1 deletion src/main/resources/assets/skinshuffle/lang/en_us.json
Original file line number Diff line number Diff line change
Expand Up @@ -99,5 +99,6 @@
"skinshuffle.edit.source.cycle_prefix": "Source",
"skinshuffle.edit.source.title": "Skin Source",
"skinshuffle.edit.source.skin_model": "Skin Model",
"skinshuffle.edit.source.load_skin": "Load Skin"
"skinshuffle.edit.source.load_skin": "Load Skin",
"skinshuffle.edit.loading": "Loading..."
}
15 changes: 15 additions & 0 deletions src/main/resources/aw/1.20.1.accesswidener
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
accessWidener v1 named

accessible method net/minecraft/client/render/entity/model/BipedEntityModel getPreferredArm (Lnet/minecraft/entity/LivingEntity;)Lnet/minecraft/util/Arm;
accessible class net/minecraft/client/texture/ResourceTexture$TextureData
accessible method net/minecraft/client/QuickPlay startSingleplayer (Lnet/minecraft/client/MinecraftClient;Ljava/lang/String;)V
accessible method net/minecraft/client/QuickPlay startMultiplayer (Lnet/minecraft/client/MinecraftClient;Ljava/lang/String;)V
accessible method net/minecraft/client/QuickPlay startRealms (Lnet/minecraft/client/MinecraftClient;Lnet/minecraft/client/realms/RealmsClient;Ljava/lang/String;)V
accessible class net/minecraft/client/toast/ToastManager$Entry
accessible class net/minecraft/server/world/ThreadedAnvilChunkStorage$EntityTracker
accessible field net/minecraft/server/world/ThreadedAnvilChunkStorage entityTrackers Lit/unimi/dsi/fastutil/ints/Int2ObjectMap;
accessible field net/minecraft/server/world/ThreadedAnvilChunkStorage$EntityTracker entry Lnet/minecraft/server/network/EntityTrackerEntry;
accessible field net/minecraft/server/world/ThreadedAnvilChunkStorage$EntityTracker listeners Ljava/util/Set;
accessible method net/minecraft/client/gui/widget/ClickableWidget drawScrollableText (Lnet/minecraft/client/gui/DrawContext;Lnet/minecraft/client/font/TextRenderer;Lnet/minecraft/text/Text;IIIII)V
accessible method net/minecraft/client/gui/widget/CyclingButtonWidget <init> (IIIILnet/minecraft/text/Text;Lnet/minecraft/text/Text;ILjava/lang/Object;Lnet/minecraft/client/gui/widget/CyclingButtonWidget$Values;Ljava/util/function/Function;Ljava/util/function/Function;Lnet/minecraft/client/gui/widget/CyclingButtonWidget$UpdateCallback;Lnet/minecraft/client/option/SimpleOption$TooltipFactory;Z)V
accessible field net/minecraft/client/render/entity/model/PlayerEntityModel cloak Lnet/minecraft/client/model/ModelPart;
15 changes: 15 additions & 0 deletions src/main/resources/aw/1.20.4.accesswidener
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
accessWidener v1 named

accessible method net/minecraft/client/render/entity/model/BipedEntityModel getPreferredArm (Lnet/minecraft/entity/LivingEntity;)Lnet/minecraft/util/Arm;
accessible class net/minecraft/client/texture/ResourceTexture$TextureData
accessible method net/minecraft/client/QuickPlay startSingleplayer (Lnet/minecraft/client/MinecraftClient;Ljava/lang/String;)V
accessible method net/minecraft/client/QuickPlay startMultiplayer (Lnet/minecraft/client/MinecraftClient;Ljava/lang/String;)V
accessible method net/minecraft/client/QuickPlay startRealms (Lnet/minecraft/client/MinecraftClient;Lnet/minecraft/client/realms/RealmsClient;Ljava/lang/String;)V
accessible class net/minecraft/client/toast/ToastManager$Entry
accessible class net/minecraft/server/world/ThreadedAnvilChunkStorage$EntityTracker
accessible field net/minecraft/server/world/ThreadedAnvilChunkStorage entityTrackers Lit/unimi/dsi/fastutil/ints/Int2ObjectMap;
accessible field net/minecraft/server/world/ThreadedAnvilChunkStorage$EntityTracker entry Lnet/minecraft/server/network/EntityTrackerEntry;
accessible field net/minecraft/server/world/ThreadedAnvilChunkStorage$EntityTracker listeners Ljava/util/Set;
accessible method net/minecraft/client/gui/widget/ClickableWidget drawScrollableText (Lnet/minecraft/client/gui/DrawContext;Lnet/minecraft/client/font/TextRenderer;Lnet/minecraft/text/Text;IIIII)V
accessible method net/minecraft/client/gui/widget/CyclingButtonWidget <init> (IIIILnet/minecraft/text/Text;Lnet/minecraft/text/Text;ILjava/lang/Object;Lnet/minecraft/client/gui/widget/CyclingButtonWidget$Values;Ljava/util/function/Function;Ljava/util/function/Function;Lnet/minecraft/client/gui/widget/CyclingButtonWidget$UpdateCallback;Lnet/minecraft/client/option/SimpleOption$TooltipFactory;Z)V
accessible field net/minecraft/client/render/entity/model/PlayerEntityModel cloak Lnet/minecraft/client/model/ModelPart;
15 changes: 15 additions & 0 deletions src/main/resources/aw/1.20.6.accesswidener
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
accessWidener v1 named

accessible method net/minecraft/client/render/entity/model/BipedEntityModel getPreferredArm (Lnet/minecraft/entity/LivingEntity;)Lnet/minecraft/util/Arm;
accessible class net/minecraft/client/texture/ResourceTexture$TextureData
accessible method net/minecraft/client/QuickPlay startSingleplayer (Lnet/minecraft/client/MinecraftClient;Ljava/lang/String;)V
accessible method net/minecraft/client/QuickPlay startMultiplayer (Lnet/minecraft/client/MinecraftClient;Ljava/lang/String;)V
accessible method net/minecraft/client/QuickPlay startRealms (Lnet/minecraft/client/MinecraftClient;Lnet/minecraft/client/realms/RealmsClient;Ljava/lang/String;)V
accessible class net/minecraft/client/toast/ToastManager$Entry
accessible class net/minecraft/server/world/ThreadedAnvilChunkStorage$EntityTracker
accessible field net/minecraft/server/world/ThreadedAnvilChunkStorage entityTrackers Lit/unimi/dsi/fastutil/ints/Int2ObjectMap;
accessible field net/minecraft/server/world/ThreadedAnvilChunkStorage$EntityTracker entry Lnet/minecraft/server/network/EntityTrackerEntry;
accessible field net/minecraft/server/world/ThreadedAnvilChunkStorage$EntityTracker listeners Ljava/util/Set;
accessible method net/minecraft/client/gui/widget/ClickableWidget drawScrollableText (Lnet/minecraft/client/gui/DrawContext;Lnet/minecraft/client/font/TextRenderer;Lnet/minecraft/text/Text;IIIII)V
accessible method net/minecraft/client/gui/widget/CyclingButtonWidget <init> (IIIILnet/minecraft/text/Text;Lnet/minecraft/text/Text;ILjava/lang/Object;Lnet/minecraft/client/gui/widget/CyclingButtonWidget$Values;Ljava/util/function/Function;Ljava/util/function/Function;Lnet/minecraft/client/gui/widget/CyclingButtonWidget$UpdateCallback;Lnet/minecraft/client/option/SimpleOption$TooltipFactory;Z)V
accessible field net/minecraft/client/render/entity/model/PlayerEntityModel cloak Lnet/minecraft/client/model/ModelPart;
File renamed without changes.
2 changes: 1 addition & 1 deletion src/main/resources/fabric.mod.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
},
"license": "MIT",
"icon": "assets/skinshuffle/icon.png",
"accessWidener": "skinshuffle.accesswidener",
"accessWidener": "aw/${minecraft_version}.accesswidener",
"environment": "*",
"entrypoints": {
"client": [
Expand Down

0 comments on commit 42d720c

Please sign in to comment.