From 9cf8a430f5d67259df1681ec10a9df95bb6a3be1 Mon Sep 17 00:00:00 2001 From: GaLicn <133291877+GaLicn@users.noreply.github.com> Date: Fri, 12 Dec 2025 14:32:37 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=BB=E6=A4=8D=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../LabeledWirelessTransceiverScreen.java | 111 +++++++++++++++--- .../assets/extendedae_plus/lang/en_us.json | 3 + 2 files changed, 100 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/extendedae_plus/client/screen/LabeledWirelessTransceiverScreen.java b/src/main/java/com/extendedae_plus/client/screen/LabeledWirelessTransceiverScreen.java index 8ae0e12..a301ee3 100644 --- a/src/main/java/com/extendedae_plus/client/screen/LabeledWirelessTransceiverScreen.java +++ b/src/main/java/com/extendedae_plus/client/screen/LabeledWirelessTransceiverScreen.java @@ -9,16 +9,18 @@ import com.mojang.blaze3d.systems.RenderSystem; import net.neoforged.neoforge.network.PacketDistributor; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.components.AbstractWidget; import net.minecraft.client.gui.components.Button; +import net.minecraft.client.gui.components.Tooltip; import net.minecraft.client.gui.components.EditBox; import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; -import org.lwjgl.glfw.GLFW; import java.util.ArrayList; import java.util.List; +import java.util.function.Consumer; public class LabeledWirelessTransceiverScreen extends AbstractContainerScreen { private static final ResourceLocation TEX = ExtendedAEPlus.id("textures/gui/lable_wireless_transceiver_gui.png"); @@ -42,10 +44,10 @@ public class LabeledWirelessTransceiverScreen extends AbstractContainerScreen entries = new ArrayList<>(); @@ -90,14 +92,14 @@ public class LabeledWirelessTransceiverScreen extends AbstractContainerScreen sendSet(searchBox.getValue())) - .bounds(startX, startY, BTN_W, BTN_H).build(); - this.deleteBtn = Button.builder(Component.translatable("gui.extendedae_plus.labeled_wireless.button.delete"), b -> sendDelete()) - .bounds(secondColX, startY, BTN_W, BTN_H).build(); - this.setBtn = Button.builder(Component.translatable("gui.extendedae_plus.labeled_wireless.button.set"), b -> sendSet(getSelectedLabel())) - .bounds(startX, secondRowY, BTN_W, BTN_H).build(); - this.disconnectBtn = Button.builder(Component.translatable("gui.extendedae_plus.labeled_wireless.button.refresh"), b -> sendDisconnect()) - .bounds(secondColX, secondRowY, BTN_W, BTN_H).build(); + this.newBtn = new StateButton(startX, startY, BTN_W, BTN_H, BTN_U, BTN_V, 2, 177, 2, 195, TEX, TEX_W, TEX_H, + b -> sendSet(searchBox.getValue()), Component.translatable("gui.extendedae_plus.labeled_wireless.button.new")); + this.deleteBtn = new StateButton(secondColX, startY, BTN_W, BTN_H, BTN_U, BTN_V, 2, 177, 2, 195, TEX, TEX_W, TEX_H, + b -> sendDelete(), Component.translatable("gui.extendedae_plus.labeled_wireless.button.delete")); + this.setBtn = new StateButton(startX, secondRowY, BTN_W, BTN_H, BTN_U, BTN_V, 2, 177, 2, 195, TEX, TEX_W, TEX_H, + b -> sendSet(getSelectedLabel()), Component.translatable("gui.extendedae_plus.labeled_wireless.button.set")); + this.disconnectBtn = new StateButton(secondColX, secondRowY, BTN_W, BTN_H, BTN_U, BTN_V, 2, 177, 2, 195, TEX, TEX_W, TEX_H, + b -> sendDisconnect(), Component.translatable("gui.extendedae_plus.labeled_wireless.button.refresh")); this.addRenderableWidget(this.newBtn); this.addRenderableWidget(this.deleteBtn); @@ -354,7 +356,26 @@ public class LabeledWirelessTransceiverScreen extends AbstractContainerScreen onPress; + private boolean pressedVisual = false; + + public StateButton(int x, int y, int w, int h, int baseU, int baseV, int hoverU, int hoverV, int pressU, int pressV, + ResourceLocation tex, int texW, int texH, Consumer onPress, Component tooltip) { + super(x, y, w, h, tooltip); + this.tex = tex; + this.texW = texW; + this.texH = texH; + this.baseU = baseU; + this.baseV = baseV; + this.hoverU = hoverU; + this.hoverV = hoverV; + this.pressU = pressU; + this.pressV = pressV; + this.onPress = onPress; + this.setTooltip(Tooltip.create(tooltip)); + } + + @Override + protected void renderWidget(GuiGraphics gfx, int mouseX, int mouseY, float partialTicks) { + boolean hovered = this.isHoveredOrFocused(); + boolean pressed = pressedVisual; + int u = baseU; + int v = baseV; + if (pressed) { + u = pressU; + v = pressV; + } else if (hovered) { + u = hoverU; + v = hoverV; + } + gfx.blit(tex, this.getX(), this.getY(), u, v, this.getWidth(), this.getHeight(), texW, texH); + } + + @Override + public void onClick(double mouseX, double mouseY) { + this.pressedVisual = true; + this.onPress.accept(this); + this.playDownSound(Minecraft.getInstance().getSoundManager()); + } + + @Override + public void onRelease(double mouseX, double mouseY) { + this.pressedVisual = false; + } + + @Override + protected void updateWidgetNarration(net.minecraft.client.gui.narration.NarrationElementOutput narration) { + defaultButtonNarrationText(narration); + } + } } diff --git a/src/main/resources/assets/extendedae_plus/lang/en_us.json b/src/main/resources/assets/extendedae_plus/lang/en_us.json index ac13263..c4da413 100644 --- a/src/main/resources/assets/extendedae_plus/lang/en_us.json +++ b/src/main/resources/assets/extendedae_plus/lang/en_us.json @@ -130,9 +130,12 @@ "gui.extendedae_plus.labeled_wireless.online_count": "Online", "extendedae_plus.jade.label": "Label: %s", + "extendedae_plus.jade.owner": "Owner: %s", "extendedae_plus.jade.owner.public": "Owner: Public", "extendedae_plus.jade.channels": "Channels: %s", "extendedae_plus.jade.channels_of": "Channels: %s/%s", + "extendedae_plus.jade.online": "Online", + "extendedae_plus.jade.offline": "Offline", "extendedae_plus.tooltip.owner": "Owner: %s", "extendedae_plus.tooltip.owner.public": "Owner: Public",