From 000048cc8f4389f086c2e8e89f57cde69d3ae594 Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Fri, 4 Sep 2020 20:56:05 +0200 Subject: [PATCH] Support 1.15 button hover style for textured buttons --- jGui | 2 +- .../replaymod/editor/gui/GuiEditReplay.java | 9 +++-- .../com/replaymod/extras/HotkeyButtons.java | 7 ++-- .../replay/gui/overlay/GuiReplayOverlay.java | 8 ++--- .../simplepathing/gui/GuiPathing.java | 34 +++++++++--------- .../resources/assets/replaymod/replay_gui.png | Bin 12566 -> 24090 bytes 6 files changed, 29 insertions(+), 31 deletions(-) diff --git a/jGui b/jGui index 8f296cc5..939ead86 160000 --- a/jGui +++ b/jGui @@ -1 +1 @@ -Subproject commit 8f296cc54da2793e2035719302dc6f70b69af634 +Subproject commit 939ead86b6ea194496e216334369d872fdd13f32 diff --git a/src/main/java/com/replaymod/editor/gui/GuiEditReplay.java b/src/main/java/com/replaymod/editor/gui/GuiEditReplay.java index cb66ac33..2729c6d8 100644 --- a/src/main/java/com/replaymod/editor/gui/GuiEditReplay.java +++ b/src/main/java/com/replaymod/editor/gui/GuiEditReplay.java @@ -12,7 +12,6 @@ import de.johni0702.minecraft.gui.container.GuiContainer; import de.johni0702.minecraft.gui.container.GuiPanel; import de.johni0702.minecraft.gui.element.GuiButton; import de.johni0702.minecraft.gui.element.GuiHorizontalScrollbar; -import de.johni0702.minecraft.gui.element.GuiTexturedButton; import de.johni0702.minecraft.gui.element.GuiTooltip; import de.johni0702.minecraft.gui.element.advanced.GuiProgressBar; import de.johni0702.minecraft.gui.element.advanced.GuiTimelineTime; @@ -42,14 +41,14 @@ public class GuiEditReplay extends AbstractGuiPopup { private final GuiHorizontalScrollbar scrollbar = new GuiHorizontalScrollbar().setSize(300, 9); - private final GuiTexturedButton zoomInButton = new GuiTexturedButton().setSize(9, 9) + private final GuiButton zoomInButton = new GuiButton().setSize(9, 9) .onClick(() -> zoomTimeline(2d / 3d)) - .setTexture(ReplayMod.TEXTURE, ReplayMod.TEXTURE_SIZE).setTexturePosH(40, 20) + .setTexture(ReplayMod.TEXTURE, ReplayMod.TEXTURE_SIZE).setSpriteUV(40, 20) .setTooltip(new GuiTooltip().setI18nText("replaymod.gui.ingame.menu.zoomin")); - private final GuiTexturedButton zoomOutButton = new GuiTexturedButton().setSize(9, 9) + private final GuiButton zoomOutButton = new GuiButton().setSize(9, 9) .onClick(() -> zoomTimeline(3d / 2d)) - .setTexture(ReplayMod.TEXTURE, ReplayMod.TEXTURE_SIZE).setTexturePosH(40, 30) + .setTexture(ReplayMod.TEXTURE, ReplayMod.TEXTURE_SIZE).setSpriteUV(40, 30) .setTooltip(new GuiTooltip().setI18nText("replaymod.gui.ingame.menu.zoomout")); private final GuiPanel zoomButtonPanel = new GuiPanel() diff --git a/src/main/java/com/replaymod/extras/HotkeyButtons.java b/src/main/java/com/replaymod/extras/HotkeyButtons.java index 26a56cb9..3e07a6a4 100644 --- a/src/main/java/com/replaymod/extras/HotkeyButtons.java +++ b/src/main/java/com/replaymod/extras/HotkeyButtons.java @@ -13,7 +13,6 @@ import de.johni0702.minecraft.gui.container.GuiPanel; import de.johni0702.minecraft.gui.element.GuiButton; import de.johni0702.minecraft.gui.element.GuiElement; import de.johni0702.minecraft.gui.element.GuiLabel; -import de.johni0702.minecraft.gui.element.GuiTexturedButton; import de.johni0702.minecraft.gui.layout.CustomLayout; import de.johni0702.minecraft.gui.layout.GridLayout; import de.johni0702.minecraft.gui.layout.HorizontalLayout; @@ -40,15 +39,15 @@ public class HotkeyButtons extends EventRegistrations implements Extra { { on(ReplayOpenedCallback.EVENT, replayHandler -> new Gui(mod, replayHandler.getOverlay())); } public static final class Gui { - private final GuiTexturedButton toggleButton; + private final GuiButton toggleButton; private final GridLayout panelLayout; private final GuiPanel panel; private boolean open; public Gui(ReplayMod mod, GuiReplayOverlay overlay) { - toggleButton = new GuiTexturedButton(overlay).setSize(20, 20) - .setTexture(ReplayMod.TEXTURE, ReplayMod.TEXTURE_SIZE).setTexturePosH(0, 120) + toggleButton = new GuiButton(overlay).setSize(20, 20) + .setTexture(ReplayMod.TEXTURE, ReplayMod.TEXTURE_SIZE).setSpriteUV(0, 120) .onClick(new Runnable() { @Override public void run() { diff --git a/src/main/java/com/replaymod/replay/gui/overlay/GuiReplayOverlay.java b/src/main/java/com/replaymod/replay/gui/overlay/GuiReplayOverlay.java index ac999d50..c2031f6c 100644 --- a/src/main/java/com/replaymod/replay/gui/overlay/GuiReplayOverlay.java +++ b/src/main/java/com/replaymod/replay/gui/overlay/GuiReplayOverlay.java @@ -9,9 +9,9 @@ import de.johni0702.minecraft.gui.GuiRenderer; import de.johni0702.minecraft.gui.RenderInfo; import de.johni0702.minecraft.gui.container.AbstractGuiOverlay; import de.johni0702.minecraft.gui.container.GuiPanel; +import de.johni0702.minecraft.gui.element.GuiButton; import de.johni0702.minecraft.gui.element.GuiElement; import de.johni0702.minecraft.gui.element.GuiSlider; -import de.johni0702.minecraft.gui.element.GuiTexturedButton; import de.johni0702.minecraft.gui.element.GuiTooltip; import de.johni0702.minecraft.gui.element.advanced.IGuiTimeline; import de.johni0702.minecraft.gui.layout.CustomLayout; @@ -41,13 +41,13 @@ public class GuiReplayOverlay extends AbstractGuiOverlay { public final GuiPanel topPanel = new GuiPanel(this) .setLayout(new HorizontalLayout(HorizontalLayout.Alignment.LEFT).setSpacing(5)); - public final GuiTexturedButton playPauseButton = new GuiTexturedButton() { + public final GuiButton playPauseButton = new GuiButton() { @Override public GuiElement getTooltip(RenderInfo renderInfo) { GuiTooltip tooltip = (GuiTooltip) super.getTooltip(renderInfo); if (tooltip != null) { String label; - if (getTextureNormal().getY() == 0) { // Play button + if (getSpriteUV().getY() == 0) { // Play button label = "replaymod.gui.ingame.menu.unpause"; } else { // Pause button label = "replaymod.gui.ingame.menu.pause"; @@ -91,7 +91,7 @@ public class GuiReplayOverlay extends AbstractGuiOverlay { } }); - playPauseButton.setTexturePosH(new ReadablePoint() { + playPauseButton.setSpriteUV(new ReadablePoint() { @Override public int getX() { return 0; diff --git a/src/main/java/com/replaymod/simplepathing/gui/GuiPathing.java b/src/main/java/com/replaymod/simplepathing/gui/GuiPathing.java index 52191ff5..f1ca6a45 100644 --- a/src/main/java/com/replaymod/simplepathing/gui/GuiPathing.java +++ b/src/main/java/com/replaymod/simplepathing/gui/GuiPathing.java @@ -32,10 +32,10 @@ import de.johni0702.minecraft.gui.container.AbstractGuiScreen; import de.johni0702.minecraft.gui.container.GuiContainer; import de.johni0702.minecraft.gui.container.GuiPanel; import de.johni0702.minecraft.gui.container.GuiScreen; +import de.johni0702.minecraft.gui.element.GuiButton; import de.johni0702.minecraft.gui.element.GuiElement; import de.johni0702.minecraft.gui.element.GuiHorizontalScrollbar; import de.johni0702.minecraft.gui.element.GuiLabel; -import de.johni0702.minecraft.gui.element.GuiTexturedButton; import de.johni0702.minecraft.gui.element.GuiTooltip; import de.johni0702.minecraft.gui.element.advanced.GuiProgressBar; import de.johni0702.minecraft.gui.element.advanced.GuiTimelineTime; @@ -81,7 +81,7 @@ import static com.replaymod.simplepathing.ReplayModSimplePathing.LOGGER; public class GuiPathing { private static final Logger logger = LogManager.getLogger(); - public final GuiTexturedButton playPauseButton = new GuiTexturedButton() { + public final GuiButton playPauseButton = new GuiButton() { @Override public GuiElement getTooltip(RenderInfo renderInfo) { GuiTooltip tooltip = (GuiTooltip) super.getTooltip(renderInfo); @@ -98,7 +98,7 @@ public class GuiPathing { } }.setSize(20, 20).setTexture(ReplayMod.TEXTURE, ReplayMod.TEXTURE_SIZE).setTooltip(new GuiTooltip()); - public final GuiTexturedButton renderButton = new GuiTexturedButton().onClick(new Runnable() { + public final GuiButton renderButton = new GuiButton().onClick(new Runnable() { @Override public void run() { Timeline timeline = preparePathsForPlayback(false); @@ -113,23 +113,23 @@ public class GuiPathing { }.open(); screen.display(); } - }).setSize(20, 20).setTexture(ReplayMod.TEXTURE, ReplayMod.TEXTURE_SIZE).setTexturePosH(40, 0) + }).setSize(20, 20).setTexture(ReplayMod.TEXTURE, ReplayMod.TEXTURE_SIZE).setSpriteUV(40, 0) .setTooltip(new GuiTooltip().setI18nText("replaymod.gui.ingame.menu.renderpath")); - public final GuiTexturedButton positionKeyframeButton = new GuiTexturedButton() { + public final GuiButton positionKeyframeButton = new GuiButton() { @Override public GuiElement getTooltip(RenderInfo renderInfo) { GuiTooltip tooltip = (GuiTooltip) super.getTooltip(renderInfo); if (tooltip != null) { String label; - if (getTextureNormal().getY() == 40) { // Add keyframe - if (getTextureNormal().getX() == 0) { // Position + if (getSpriteUV().getY() == 40) { // Add keyframe + if (getSpriteUV().getX() == 0) { // Position label = "replaymod.gui.ingame.menu.addposkeyframe"; } else { // Spectator label = "replaymod.gui.ingame.menu.addspeckeyframe"; } } else { // Remove keyframe - if (getTextureNormal().getX() == 0) { // Position + if (getSpriteUV().getX() == 0) { // Position label = "replaymod.gui.ingame.menu.removeposkeyframe"; } else { // Spectator label = "replaymod.gui.ingame.menu.removespeckeyframe"; @@ -141,13 +141,13 @@ public class GuiPathing { } }.setSize(20, 20).setTexture(ReplayMod.TEXTURE, ReplayMod.TEXTURE_SIZE).setTooltip(new GuiTooltip()); - public final GuiTexturedButton timeKeyframeButton = new GuiTexturedButton() { + public final GuiButton timeKeyframeButton = new GuiButton() { @Override public GuiElement getTooltip(RenderInfo renderInfo) { GuiTooltip tooltip = (GuiTooltip) super.getTooltip(renderInfo); if (tooltip != null) { String label; - if (getTextureNormal().getY() == 80) { // Add time keyframe + if (getSpriteUV().getY() == 80) { // Add time keyframe label = "replaymod.gui.ingame.menu.addtimekeyframe"; } else { // Remove time keyframe label = "replaymod.gui.ingame.menu.removetimekeyframe"; @@ -180,20 +180,20 @@ public class GuiPathing { public final GuiTimelineTime timelineTime = new GuiTimelineTime() .setTimeline(timeline); - public final GuiTexturedButton zoomInButton = new GuiTexturedButton().setSize(9, 9).onClick(new Runnable() { + public final GuiButton zoomInButton = new GuiButton().setSize(9, 9).onClick(new Runnable() { @Override public void run() { zoomTimeline(2d / 3d); } - }).setTexture(ReplayMod.TEXTURE, ReplayMod.TEXTURE_SIZE).setTexturePosH(40, 20) + }).setTexture(ReplayMod.TEXTURE, ReplayMod.TEXTURE_SIZE).setSpriteUV(40, 20) .setTooltip(new GuiTooltip().setI18nText("replaymod.gui.ingame.menu.zoomin")); - public final GuiTexturedButton zoomOutButton = new GuiTexturedButton().setSize(9, 9).onClick(new Runnable() { + public final GuiButton zoomOutButton = new GuiButton().setSize(9, 9).onClick(new Runnable() { @Override public void run() { zoomTimeline(3d / 2d); } - }).setTexture(ReplayMod.TEXTURE, ReplayMod.TEXTURE_SIZE).setTexturePosH(40, 30) + }).setTexture(ReplayMod.TEXTURE, ReplayMod.TEXTURE_SIZE).setSpriteUV(40, 30) .setTooltip(new GuiTooltip().setI18nText("replaymod.gui.ingame.menu.zoomout")); public final GuiPanel zoomButtonPanel = new GuiPanel() @@ -239,7 +239,7 @@ public class GuiPathing { timeline.setLength(core.getSettingsRegistry().get(Setting.TIMELINE_LENGTH) * 1000); - playPauseButton.setTexturePosH(new ReadablePoint() { + playPauseButton.setSpriteUV(new ReadablePoint() { @Override public int getX() { return 0; @@ -295,7 +295,7 @@ public class GuiPathing { } }); - positionKeyframeButton.setTexturePosH(new ReadablePoint() { + positionKeyframeButton.setSpriteUV(new ReadablePoint() { @Override public int getX() { SPPath keyframePath = mod.getSelectedPath(); @@ -333,7 +333,7 @@ public class GuiPathing { } }); - timeKeyframeButton.setTexturePosH(new ReadablePoint() { + timeKeyframeButton.setSpriteUV(new ReadablePoint() { @Override public int getX() { return 0; diff --git a/src/main/resources/assets/replaymod/replay_gui.png b/src/main/resources/assets/replaymod/replay_gui.png index 0e47861d2fa8afb8a580fa2aa57090e8f7317b17..552b93ce08dd8697dd3d997603ce70006eba7d58 100644 GIT binary patch literal 24090 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 Q@}CQE%{v;!YBr(&0dMjSOaK4?