From 9801976e83025fb4988a5fecf7965a7373df010c Mon Sep 17 00:00:00 2001 From: Crystal Spider Date: Fri, 17 Jan 2025 20:24:14 +0100 Subject: [PATCH] Minor changes to the widget. --- ...tityWidget.java => FancyPlayerWidget.java} | 65 ++++++++++--------- .../entity/player/model/PlayerModel.java | 3 - .../mixin/client/TitleScreenMixin.java | 4 +- 3 files changed, 37 insertions(+), 35 deletions(-) rename common/src/main/java/it/crystalnest/fancy_entity_renderer/entity/player/{FancyPlayerEntityWidget.java => FancyPlayerWidget.java} (60%) diff --git a/common/src/main/java/it/crystalnest/fancy_entity_renderer/entity/player/FancyPlayerEntityWidget.java b/common/src/main/java/it/crystalnest/fancy_entity_renderer/entity/player/FancyPlayerWidget.java similarity index 60% rename from common/src/main/java/it/crystalnest/fancy_entity_renderer/entity/player/FancyPlayerEntityWidget.java rename to common/src/main/java/it/crystalnest/fancy_entity_renderer/entity/player/FancyPlayerWidget.java index b8fc5e2..22ae48c 100644 --- a/common/src/main/java/it/crystalnest/fancy_entity_renderer/entity/player/FancyPlayerEntityWidget.java +++ b/common/src/main/java/it/crystalnest/fancy_entity_renderer/entity/player/FancyPlayerWidget.java @@ -18,31 +18,26 @@ import java.util.function.Supplier; -public class FancyPlayerEntityWidget extends AbstractWidget { - private final FancyPlayerEntityWidget.Model model; +public class FancyPlayerWidget extends AbstractWidget { + private final FancyPlayerWidget.Model model; + private final Supplier skin; - private float rotationX = -5.0F; - private float rotationY = 30.0F; - public FancyPlayerEntityWidget(int x, int y, int width, int height, Supplier skin) { - super(x, y, width, height, CommonComponents.EMPTY); - this.model = FancyPlayerEntityWidget.Model.bake(); - this.skin = skin; - } + private float rotationX = 0F; - @Override - public void playDownSound(@NotNull SoundManager soundManager) {} + private float rotationY = 0F; - @Override - public boolean isActive() { - return false; + public FancyPlayerWidget(int x, int y, int width, int height, Supplier skin) { + super(x, y, width, height, CommonComponents.EMPTY); + this.model = FancyPlayerWidget.Model.bake(); + this.skin = skin; } @Override protected void renderWidget(GuiGraphics gfx, int mouseX, int mouseY, float partialTick) { gfx.pose().pushPose(); - gfx.pose().translate((float)this.getX() + (float)this.getWidth() / 2.0F, (float)(this.getY() + this.getHeight()), 100.0F); - float f = (float)this.getHeight() / 2.125F; + gfx.pose().translate(getX() + getWidth() / 2.0F, (float) (getY() + getHeight()), 100.0F); + float f = getHeight() / 2.125F; gfx.pose().scale(f, f, f); gfx.pose().translate(0.0F, -0.0625F, 0.0F); gfx.pose().rotateAround(Axis.XP.rotationDegrees(this.rotationX), 0.0F, -1.0625F, 0.0F); @@ -56,21 +51,34 @@ protected void renderWidget(GuiGraphics gfx, int mouseX, int mouseY, float parti } @Override - protected void updateWidgetNarration(@NotNull NarrationElementOutput output) {} + protected void onDrag(double mouseX, double mouseY, double dragX, double dragY) { + this.rotationX = Mth.clamp(this.rotationX - (float) dragY * 2.5F, -50.0F, 50.0F); + this.rotationY = Mth.clamp(this.rotationY + (float) dragX * 2.5F, -50.0F, 50.0F); + } @Override - protected void onDrag(double p_299829_, double p_299876_, double p_300028_, double p_299872_) { - this.rotationX = Mth.clamp(this.rotationX - (float)p_299872_ * 2.5F, -50.0F, 50.0F); - this.rotationY += (float)p_300028_ * 2.5F; + public void playDownSound(@NotNull SoundManager soundManager) { + // Disable playing any sound when clicked. } - record Model(PlayerModel wideModel, PlayerModel slimModel) { + @Override + public boolean isActive() { + return false; + } - public static FancyPlayerEntityWidget.Model bake() { - // Qui al posto di prendere il modelSEt ecc, creo direttamente le cose. - PlayerModel wideModel = new PlayerModel(LayerDefinition.create(PlayerModel.createMesh(CubeDeformation.NONE, false), 64, 64)/*.apply(PlayerModel.BABY_TRANSFORMER)*/.bakeRoot(), false); - PlayerModel slimModel = new PlayerModel(LayerDefinition.create(PlayerModel.createMesh(CubeDeformation.NONE, true), 64, 64).apply(PlayerModel.BABY_TRANSFORMER).bakeRoot(), true); - return new FancyPlayerEntityWidget.Model(wideModel, slimModel); + @Override + protected void updateWidgetNarration(@NotNull NarrationElementOutput output) { + // TODO: Maybe add narration for when the player name is visible (what about when the name is visible and the player is crouching?). + } + + record Model(PlayerModel wideModel, PlayerModel slimModel) { + public static FancyPlayerWidget.Model bake() { + // Qui al posto di prendere l'EntityModelSet ecc, creo direttamente le cose. + PlayerModel wideModel = new PlayerModel(LayerDefinition.create(PlayerModel.createMesh(CubeDeformation.NONE, false), 64, 64).bakeRoot(), false); + PlayerModel slimModel = new PlayerModel(LayerDefinition.create(PlayerModel.createMesh(CubeDeformation.NONE, true), 64, 64).bakeRoot(), true); + PlayerModel babyWideModel = new PlayerModel(LayerDefinition.create(PlayerModel.createMesh(CubeDeformation.NONE, false), 64, 64).apply(PlayerModel.BABY_TRANSFORMER).bakeRoot(), false); + PlayerModel babySlimModel = new PlayerModel(LayerDefinition.create(PlayerModel.createMesh(CubeDeformation.NONE, true), 64, 64).apply(PlayerModel.BABY_TRANSFORMER).bakeRoot(), true); + return new FancyPlayerWidget.Model(wideModel, slimModel); } public void render(GuiGraphics gfx, PlayerSkin skin) { @@ -78,11 +86,8 @@ public void render(GuiGraphics gfx, PlayerSkin skin) { gfx.pose().scale(1.0F, 1.0F, -1.0F); gfx.pose().translate(0.0F, -1.501F, 0.0F); PlayerModel model = skin.model() == PlayerSkin.Model.SLIM ? this.slimModel : this.wideModel; - RenderType rendertype = model.renderType(skin.texture()); - gfx.drawSpecial(source -> - model.renderToBuffer(gfx.pose(), source.getBuffer(rendertype), 15728880, OverlayTexture.NO_OVERLAY) - ); + gfx.drawSpecial(source -> model.renderToBuffer(gfx.pose(), source.getBuffer(rendertype), 15728880, OverlayTexture.NO_OVERLAY)); gfx.pose().popPose(); } } diff --git a/common/src/main/java/it/crystalnest/fancy_entity_renderer/entity/player/model/PlayerModel.java b/common/src/main/java/it/crystalnest/fancy_entity_renderer/entity/player/model/PlayerModel.java index c9c1679..fb06054 100644 --- a/common/src/main/java/it/crystalnest/fancy_entity_renderer/entity/player/model/PlayerModel.java +++ b/common/src/main/java/it/crystalnest/fancy_entity_renderer/entity/player/model/PlayerModel.java @@ -3,10 +3,7 @@ import net.minecraft.client.model.geom.ModelPart; public class PlayerModel extends net.minecraft.client.model.PlayerModel { - public PlayerModel(ModelPart root, boolean isSlim) { super(root, isSlim); } - - } diff --git a/common/src/main/java/it/crystalnest/fancy_entity_renderer/mixin/client/TitleScreenMixin.java b/common/src/main/java/it/crystalnest/fancy_entity_renderer/mixin/client/TitleScreenMixin.java index 4bed514..7aaa240 100644 --- a/common/src/main/java/it/crystalnest/fancy_entity_renderer/mixin/client/TitleScreenMixin.java +++ b/common/src/main/java/it/crystalnest/fancy_entity_renderer/mixin/client/TitleScreenMixin.java @@ -1,6 +1,6 @@ package it.crystalnest.fancy_entity_renderer.mixin.client; -import it.crystalnest.fancy_entity_renderer.entity.player.FancyPlayerEntityWidget; +import it.crystalnest.fancy_entity_renderer.entity.player.FancyPlayerWidget; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.gui.screens.TitleScreen; import net.minecraft.client.resources.DefaultPlayerSkin; @@ -19,6 +19,6 @@ protected TitleScreenMixin(Component title) { @Inject(method = "init", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screens/TitleScreen;addRenderableWidget(Lnet/minecraft/client/gui/components/events/GuiEventListener;)Lnet/minecraft/client/gui/components/events/GuiEventListener;", ordinal = 3, shift = At.Shift.AFTER)) private void onInit(CallbackInfo ci) { //this.addRenderableWidget(new PlayerSkinWidget(85, 120, this.minecraft.getEntityModels(), DefaultPlayerSkin::getDefaultSkin)); - this.addRenderableWidget(new FancyPlayerEntityWidget(0,0,85, 120, DefaultPlayerSkin::getDefaultSkin)); + this.addRenderableWidget(new FancyPlayerWidget(0,0,85, 120, DefaultPlayerSkin::getDefaultSkin)); } }