From 7dc435f537562063d030a77bf36cedaf86071b26 Mon Sep 17 00:00:00 2001 From: OroArmor Date: Sat, 9 Jan 2021 13:15:32 -0800 Subject: [PATCH] Some name changes and Javadoc --- .../registry/ScreenRegisters.java | 59 +++++++++++++++++-- .../registry/fabric/ScreenRegistersImpl.java | 10 ++-- .../registry/forge/ScreenRegistersImpl.java | 14 ++--- 3 files changed, 66 insertions(+), 17 deletions(-) diff --git a/common/src/main/java/me/shedaniel/architectury/registry/ScreenRegisters.java b/common/src/main/java/me/shedaniel/architectury/registry/ScreenRegisters.java index fe8567d8..85bde18d 100644 --- a/common/src/main/java/me/shedaniel/architectury/registry/ScreenRegisters.java +++ b/common/src/main/java/me/shedaniel/architectury/registry/ScreenRegisters.java @@ -35,31 +35,80 @@ import net.minecraft.world.inventory.MenuType; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -public class ScreenRegisters { +/** + * A utility class to register {@link MenuType}s and {@link Screen}s for containers + */ +public final class ScreenRegisters { + private ScreenRegisters() {} + + /** + * Registers a simple {@link MenuType} + * @param resourceLocation The identifier for the {@link MenuType} + * @param menuTypeSupplier A functional interface to create the {@link MenuType} from an id (Integer) and inventory + * @param The type of {@link AbstractContainerMenu} that handles the logic for the {@link MenuType} + * @return The {@link MenuType} for your {@link AbstractContainerMenu} + */ @ExpectPlatform - public static MenuType registerSimpleMenuType(ResourceLocation identifier, BiFunction menuTypeSupplier) { + public static MenuType registerSimpleMenuType(ResourceLocation resourceLocation, BiFunction menuTypeSupplier) { throw new AssertionError(); } + /** + * Registers a extended {@link MenuType} + * @param resourceLocation The identifier for the {@link MenuType} + * @param menuTypeSupplier A functional interface to create the {@link MenuType} from an id (Integer), {@link Inventory}, and {@link FriendlyByteBuf} + * @param The type of {@link AbstractContainerMenu} that handles the logic for the {@link MenuType} + * @return The {@link MenuType} for your {@link AbstractContainerMenu} + */ @ExpectPlatform - public static MenuType registerExtendedMenuType(ResourceLocation identifier, ExtendedMenuTypeFactory menuTypeSupplier) { + public static MenuType registerExtendedMenuType(ResourceLocation resourceLocation, ExtendedMenuTypeFactory menuTypeSupplier) { throw new AssertionError(); } + /** + * Registers a Screen Factory on the client to display + * @param menuType The {@link MenuType} the screen visualizes + * @param screenSupplier A functional interface that is used to create new {@link Screen}s + * @param The type of {@link AbstractContainerMenu} for the screen + * @param The type for the {@link Screen} + */ @Environment(EnvType.CLIENT) @ExpectPlatform public static > void registerScreenFactory(MenuType menuType, ScreenFactory screenSupplier) { throw new AssertionError(); } + /** + * Creates new screens + * @param The type of {@link AbstractContainerMenu} for the screen + * @param The type for the {@link Screen} + */ @Environment(EnvType.CLIENT) @FunctionalInterface public interface ScreenFactory> { - S create(H var1, Inventory var2, Component var3); + /** + * Creates a new {@link S} that extends {@link Screen} + * @param containerMenu The {@link AbstractContainerMenu} that controls the game logic for the screen + * @param inventory The {@link Inventory} for the screen + * @param component The {@link Component} for the screen + * @return A new {@link S} that extends {@link Screen} + */ + S create(H containerMenu, Inventory inventory, Component component); } + /** + * Creates extended menus + * @param The {@link AbstractContainerMenu} type + */ @FunctionalInterface public interface ExtendedMenuTypeFactory { - T create(int var1, Inventory var2, FriendlyByteBuf var3); + /** + * Creates a new {@link T} that extends {@link AbstractContainerMenu} + * @param id The id for the menu + * @param inventory The {@link Inventory} for the menu + * @param friendlyByteBuf The {@link FriendlyByteBuf} for the menu to provide extra data + * @return A new {@link T} that extends {@link AbstractContainerMenu} + */ + T create(int id, Inventory inventory, FriendlyByteBuf friendlyByteBuf); } } diff --git a/fabric/src/main/java/me/shedaniel/architectury/registry/fabric/ScreenRegistersImpl.java b/fabric/src/main/java/me/shedaniel/architectury/registry/fabric/ScreenRegistersImpl.java index 3b526555..3d98958b 100644 --- a/fabric/src/main/java/me/shedaniel/architectury/registry/fabric/ScreenRegistersImpl.java +++ b/fabric/src/main/java/me/shedaniel/architectury/registry/fabric/ScreenRegistersImpl.java @@ -38,16 +38,16 @@ import net.fabricmc.fabric.api.client.screenhandler.v1.ScreenRegistry; import net.fabricmc.fabric.api.screenhandler.v1.ScreenHandlerRegistry; public class ScreenRegistersImpl { - public static MenuType registerMenuType(ResourceLocation identifier, BiFunction menuTypeSupplier) { - return ScreenHandlerRegistry.registerSimple(identifier, (integer, inventory) -> menuTypeSupplier.apply(integer, inventory)); + public static MenuType registerMenuType(ResourceLocation resourceLocation, BiFunction menuTypeSupplier) { + return ScreenHandlerRegistry.registerSimple(resourceLocation, menuTypeSupplier::apply); } - public static MenuType registerExtendedMenuType(ResourceLocation identifier, ScreenRegisters.ExtendedMenuTypeFactory menuTypeSupplier) { - return ScreenHandlerRegistry.registerExtended(identifier, (integer, inventory, friendlyByteBuf) -> menuTypeSupplier.create(integer, inventory, friendlyByteBuf)); + public static MenuType registerExtendedMenuType(ResourceLocation resourceLocation, ScreenRegisters.ExtendedMenuTypeFactory menuTypeSupplier) { + return ScreenHandlerRegistry.registerExtended(resourceLocation, menuTypeSupplier::create); } @Environment(EnvType.CLIENT) public static > void registerScreenFactory(MenuType menuType, ScreenRegisters.ScreenFactory screenSupplier) { - ScreenRegistry.register(menuType, (H h, Inventory i, Component t) -> screenSupplier.create(h, i, t)); + ScreenRegistry.register(menuType, screenSupplier::create); } } diff --git a/forge/src/main/java/me/shedaniel/architectury/registry/forge/ScreenRegistersImpl.java b/forge/src/main/java/me/shedaniel/architectury/registry/forge/ScreenRegistersImpl.java index dcea8981..1b3e85a5 100644 --- a/forge/src/main/java/me/shedaniel/architectury/registry/forge/ScreenRegistersImpl.java +++ b/forge/src/main/java/me/shedaniel/architectury/registry/forge/ScreenRegistersImpl.java @@ -39,22 +39,22 @@ import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.inventory.MenuType; public class ScreenRegistersImpl { - private static final DeferredRegister MENU_TYPE_REGISTRY = DeferredRegister.create(ArchitecturyForge.MOD_ID, Registry.MENU_REGISTRY); + private static final DeferredRegister> MENU_TYPE_REGISTRY = DeferredRegister.create(ArchitecturyForge.MOD_ID, Registry.MENU_REGISTRY); - public static MenuType registerMenuType(ResourceLocation identifier, BiFunction menuTypeSupplier) { + public static MenuType registerMenuType(ResourceLocation resourceLocation, BiFunction menuTypeSupplier) { MenuType menuType = IForgeContainerType.create((windowId, inv, data) -> menuTypeSupplier.apply(windowId, inv)); - MENU_TYPE_REGISTRY.register(identifier, () -> menuType); + MENU_TYPE_REGISTRY.register(resourceLocation, () -> menuType); return menuType; } - public static MenuType registerExtendedMenuType(ResourceLocation identifier, ScreenRegisters.ExtendedMenuTypeFactory menuTypeSupplier) { - MenuType menuType = IForgeContainerType.create((windowId, inv, data) -> menuTypeSupplier.create(windowId, inv, data)); - MENU_TYPE_REGISTRY.register(identifier, () -> menuType); + public static MenuType registerExtendedMenuType(ResourceLocation resourceLocation, ScreenRegisters.ExtendedMenuTypeFactory menuTypeSupplier) { + MenuType menuType = IForgeContainerType.create(menuTypeSupplier::create); + MENU_TYPE_REGISTRY.register(resourceLocation, () -> menuType); return menuType; } @OnlyIn(Dist.CLIENT) public static > void registerScreenFactory(MenuType menuType, ScreenRegisters.ScreenFactory screenSupplier) { - MenuScreens.register(menuType, (H t, Inventory i, Component c) -> screenSupplier.create(t, i, c)); + MenuScreens.register(menuType, screenSupplier::create); } }