diff --git a/fabric-screen-handler-api-v1/build.gradle b/fabric-screen-handler-api-v1/build.gradle index 79093cb89..a228f5049 100644 --- a/fabric-screen-handler-api-v1/build.gradle +++ b/fabric-screen-handler-api-v1/build.gradle @@ -1,5 +1,5 @@ archivesBaseName = "fabric-screen-handler-api-v1" -version = getSubprojectVersion(project, "1.0.1") +version = getSubprojectVersion(project, "1.1.0") minecraft { accessWidener = file('src/main/resources/fabric-screen-handler-api-v1.accesswidener') diff --git a/fabric-screen-handler-api-v1/src/main/java/net/fabricmc/fabric/api/client/screenhandler/v1/ScreenRegistry.java b/fabric-screen-handler-api-v1/src/main/java/net/fabricmc/fabric/api/client/screenhandler/v1/ScreenRegistry.java index 725859b59..5b666fec0 100644 --- a/fabric-screen-handler-api-v1/src/main/java/net/fabricmc/fabric/api/client/screenhandler/v1/ScreenRegistry.java +++ b/fabric-screen-handler-api-v1/src/main/java/net/fabricmc/fabric/api/client/screenhandler/v1/ScreenRegistry.java @@ -61,9 +61,9 @@ public final class ScreenRegistry { * @param <H> the screen handler type * @param <S> the screen type */ - public static <H extends ScreenHandler, S extends Screen & ScreenHandlerProvider<H>> void register(ScreenHandlerType<? extends H> type, Factory<? super H, ? extends S> screenFactory) { + public static <H extends ScreenHandler, S extends Screen & ScreenHandlerProvider<H>> void register(ScreenHandlerType<? extends H> type, Factory<H, S> screenFactory) { // Convert our factory to the vanilla provider here as the vanilla interface won't be available to modders. - HandledScreens.<H, S>register(type, screenFactory::create); + HandledScreens.register(type, screenFactory::create); } /** diff --git a/fabric-screen-handler-api-v1/src/testmod/java/net/fabricmc/fabric/test/screenhandler/client/ClientScreenHandlerTest.java b/fabric-screen-handler-api-v1/src/testmod/java/net/fabricmc/fabric/test/screenhandler/client/ClientScreenHandlerTest.java index 6edce1eaa..934978d4b 100644 --- a/fabric-screen-handler-api-v1/src/testmod/java/net/fabricmc/fabric/test/screenhandler/client/ClientScreenHandlerTest.java +++ b/fabric-screen-handler-api-v1/src/testmod/java/net/fabricmc/fabric/test/screenhandler/client/ClientScreenHandlerTest.java @@ -20,21 +20,13 @@ import net.minecraft.client.gui.screen.ingame.Generic3x3ContainerScreen; import net.fabricmc.fabric.api.client.screenhandler.v1.ScreenRegistry; import net.fabricmc.fabric.test.screenhandler.ScreenHandlerTest; -import net.fabricmc.fabric.test.screenhandler.screen.BoxScreenHandler; -import net.fabricmc.fabric.test.screenhandler.screen.PositionedBagScreenHandler; import net.fabricmc.api.ClientModInitializer; public class ClientScreenHandlerTest implements ClientModInitializer { @Override public void onInitializeClient() { ScreenRegistry.register(ScreenHandlerTest.BAG_SCREEN_HANDLER, Generic3x3ContainerScreen::new); - ScreenRegistry.<PositionedBagScreenHandler, PositionedScreen<PositionedBagScreenHandler>>register( - ScreenHandlerTest.POSITIONED_BAG_SCREEN_HANDLER, - PositionedScreen::new - ); - ScreenRegistry.<BoxScreenHandler, PositionedScreen<BoxScreenHandler>>register( - ScreenHandlerTest.BOX_SCREEN_HANDLER, - PositionedScreen::new - ); + ScreenRegistry.register(ScreenHandlerTest.POSITIONED_BAG_SCREEN_HANDLER, PositionedScreen::new); + ScreenRegistry.register(ScreenHandlerTest.BOX_SCREEN_HANDLER, PositionedScreen::new); } } diff --git a/fabric-screen-handler-api-v1/src/testmod/java/net/fabricmc/fabric/test/screenhandler/client/PositionedScreen.java b/fabric-screen-handler-api-v1/src/testmod/java/net/fabricmc/fabric/test/screenhandler/client/PositionedScreen.java index 631479061..4c149339b 100644 --- a/fabric-screen-handler-api-v1/src/testmod/java/net/fabricmc/fabric/test/screenhandler/client/PositionedScreen.java +++ b/fabric-screen-handler-api-v1/src/testmod/java/net/fabricmc/fabric/test/screenhandler/client/PositionedScreen.java @@ -16,6 +16,8 @@ package net.fabricmc.fabric.test.screenhandler.client; +import java.util.Optional; + import com.mojang.blaze3d.systems.RenderSystem; import net.minecraft.client.gui.screen.ingame.HandledScreen; @@ -29,11 +31,20 @@ import net.minecraft.util.math.BlockPos; import net.fabricmc.fabric.test.screenhandler.screen.PositionedScreenHandler; -public class PositionedScreen<T extends ScreenHandler & PositionedScreenHandler> extends HandledScreen<T> { +public class PositionedScreen extends HandledScreen<ScreenHandler> { private static final Identifier TEXTURE = new Identifier("minecraft", "textures/gui/container/dispenser.png"); - public PositionedScreen(T handler, PlayerInventory inventory, Text title) { - super(handler, inventory, title); + public PositionedScreen(ScreenHandler handler, PlayerInventory inventory, Text title) { + super(handler, inventory, getPositionText(handler).orElse(title)); + } + + private static Optional<Text> getPositionText(ScreenHandler handler) { + if (handler instanceof PositionedScreenHandler) { + BlockPos pos = ((PositionedScreenHandler) handler).getPos(); + return pos != null ? Optional.of(new LiteralText("(" + pos.toShortString() + ")")) : Optional.empty(); + } else { + return Optional.empty(); + } } @Override @@ -44,11 +55,10 @@ public class PositionedScreen<T extends ScreenHandler & PositionedScreenHandler> } @Override - protected void drawForeground(MatrixStack matrices, int mouseX, int mouseY) { - BlockPos pos = handler.getPos(); - Text usedTitle = pos != null ? new LiteralText("(" + pos.toShortString() + ")") : title; - textRenderer.draw(matrices, usedTitle, (float) (backgroundWidth / 2 - textRenderer.getWidth(usedTitle) / 2), 6.0F, 0x404040); - textRenderer.draw(matrices, playerInventory.getDisplayName(), 8.0F, backgroundHeight - 96 + 2, 0x404040); + protected void init() { + super.init(); + // Center the title + titleX = (backgroundWidth - textRenderer.getWidth(title)) / 2; } @Override