Skip to content

Commit 6812d50

Browse files
committed
refactor(gui): 将WandScreen合并到UiScreenBase基类中
- 移除独立的WandScreen类,将其功能整合到UiScreenBase中 - 添加reportScreenSize方法到UiMenuBase基类 - 更新ClientEventHandler中的屏幕注册逻辑,使用UiScreenBase替代WandScreen
1 parent e7a81c6 commit 6812d50

File tree

6 files changed

+24
-49
lines changed

6 files changed

+24
-49
lines changed

src/main/java/org/creepebucket/programmable_magic/client/ClientEventHandler.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
import net.neoforged.bus.api.SubscribeEvent;
55
import net.neoforged.neoforge.client.event.EntityRenderersEvent;
66
import net.neoforged.neoforge.client.event.RegisterMenuScreensEvent;
7+
import org.creepebucket.programmable_magic.gui.lib.ui.UiScreenBase;
78
import org.creepebucket.programmable_magic.gui.wand.WandMenu;
8-
import org.creepebucket.programmable_magic.gui.wand.WandScreen;
99
import org.creepebucket.programmable_magic.registries.ModMenuTypes;
1010
import org.creepebucket.programmable_magic.client.renderer.SpellEntityRenderer;
1111
import org.creepebucket.programmable_magic.registries.ModEntityTypes;
@@ -15,8 +15,8 @@ public class ClientEventHandler {
1515
public static void registerScreen(RegisterMenuScreensEvent event) {
1616
event.register(
1717
ModMenuTypes.WAND_MENU.get(),
18-
(net.minecraft.client.gui.screens.MenuScreens.ScreenConstructor<WandMenu, WandScreen>)
19-
(menu, inv, title) -> new WandScreen(menu, inv, title)
18+
(MenuScreens.ScreenConstructor<WandMenu, UiScreenBase<WandMenu>>)
19+
(menu, inv, title) -> new UiScreenBase<>(menu, inv, title)
2020
);
2121
}
2222

src/main/java/org/creepebucket/programmable_magic/compat/jei/JEIPlugin.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import mezz.jei.api.JeiPlugin;
55
import mezz.jei.api.registration.IGuiHandlerRegistration;
66
import net.minecraft.resources.Identifier;
7-
import org.creepebucket.programmable_magic.gui.wand.WandScreen;
7+
import org.creepebucket.programmable_magic.gui.lib.ui.UiScreenBase;
88
import org.jetbrains.annotations.NotNull;
99

1010
import static org.creepebucket.programmable_magic.Programmable_magic.MODID;
@@ -18,6 +18,6 @@ public class JEIPlugin implements IModPlugin {
1818

1919
@Override
2020
public void registerGuiHandlers(@NotNull IGuiHandlerRegistration registration) {
21-
registration.addGuiScreenHandler(WandScreen.class, screen -> null);
21+
registration.addGuiScreenHandler(UiScreenBase.class, screen -> null);
2222
}
2323
}

src/main/java/org/creepebucket/programmable_magic/gui/lib/ui/UiMenuBase.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ protected UiMenuBase(MenuType<?> type, int containerId, Inventory playerInv, Abs
4444
@Override
4545
public boolean stillValid(Player player) { return true; }
4646

47+
public void reportScreenSize(int screenWidth, int screenHeight) { }
48+
4749
/**
4850
* UI 菜单默认不支持快速搬运;需要时由子类实现。
4951
*/

src/main/java/org/creepebucket/programmable_magic/gui/lib/ui/UiScreenBase.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
/**
1515
* UI 屏幕基类:将 Minecraft 的输入/渲染生命周期桥接到 {@link UiRuntime}。
1616
*/
17-
public abstract class UiScreenBase<Menu extends UiMenuBase> extends SlotManipulationScreen<Menu> {
17+
public class UiScreenBase<Menu extends UiMenuBase> extends SlotManipulationScreen<Menu> {
1818
private float lastPartialTick = 0.0F;
1919

2020
/**
@@ -34,6 +34,7 @@ protected void init() {
3434
super.init();
3535

3636
updateUiBounds();
37+
reportScreenSize();
3738

3839
this.menu.ui().bindSendToServer((k, v) -> {
3940
Minecraft.getInstance().getConnection().send(new ServerboundCustomPayloadPacket(new SimpleKvPacket(k, v)));
@@ -51,6 +52,7 @@ public void resize(int width, int height) {
5152
this.imageHeight = height;
5253
super.resize(width, height);
5354
updateUiBounds();
55+
reportScreenSize();
5456
}
5557

5658
/**
@@ -77,7 +79,6 @@ public void render(GuiGraphics graphics, int mouseX, int mouseY, float partialTi
7779
*/
7880
@Override
7981
protected void renderLabels(GuiGraphics graphics, int mouseX, int mouseY) {
80-
super.renderLabels(graphics, mouseX, mouseY);
8182
this.menu.ui().renderForeground(graphics, mouseX, mouseY, this.lastPartialTick);
8283
}
8384

@@ -151,4 +152,12 @@ private void updateUiBounds() {
151152
var window = Minecraft.getInstance().getWindow();
152153
this.menu.ui().setBounds(window.getGuiScaledWidth(), window.getGuiScaledHeight(), this.leftPos, this.topPos);
153154
}
155+
156+
private void reportScreenSize() {
157+
var window = Minecraft.getInstance().getWindow();
158+
this.menu.reportScreenSize(window.getGuiScaledWidth(), window.getGuiScaledHeight());
159+
}
160+
161+
@Override
162+
public void renderBackground(GuiGraphics graphics, int mouseX, int mouseY, float partialTick) { }
154163
}

src/main/java/org/creepebucket/programmable_magic/gui/wand/WandMenu.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,12 @@ public void sendMenuData(String key, Object value) {
152152
sendUiData(key, value);
153153
}
154154

155+
@Override
156+
public void reportScreenSize(int screenWidth, int screenHeight) {
157+
sendMenuData(KEY_SCREEN_WIDTH, screenWidth);
158+
sendMenuData(KEY_SCREEN_HEIGHT, screenHeight);
159+
}
160+
155161
@Override
156162
/**
157163
* 简化:任意时刻均可交互。

src/main/java/org/creepebucket/programmable_magic/gui/wand/WandScreen.java

Lines changed: 0 additions & 42 deletions
This file was deleted.

0 commit comments

Comments
 (0)