Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private static final Map<ResourceLocation, Supplier<BiFunction<InventoryPlayer, BlockPos, GuiScreen>>> GUISUPPLIERS = new HashMap<>();
- public static void registerGuiScreens()
- {
- registerGui("crate_gui", () -> (playerInv, pos) -> new GuiCrate(new ContainerCrate(playerInv, (TileEntityCrate)playerInv.player.world.getTileEntity(pos)), playerInv));
- registerGui("large_chest_gui", () -> (playerInv, pos) -> new GuiLargeChest(new ContainerLargeChest(playerInv, (TileEntityLargeChest)playerInv.player.world.getTileEntity(pos)), playerInv));
- registerGui("carpenters_table_gui", () -> (playerInv, pos) -> new GuiCarpentersTable(playerInv, playerInv.player.world, pos));
- registerGui("bookshelf_cabinet_gui", () -> (playerInv, pos) -> new GuiBookshelf(new ContainerBookshelfCabinet(playerInv, (TileEntityBookshelf.Cabinet)playerInv.player.world.getTileEntity(pos)), playerInv));
- }
- private static void registerGui(String id, Supplier<BiFunction<InventoryPlayer, BlockPos, GuiScreen>> returnSupplier)
- {
- ResourceLocation resourceId = new ResourceLocation(Constants.MODID, id);
- if (!GUISUPPLIERS.containsKey(resourceId))
- {
- GUISUPPLIERS.put(resourceId, returnSupplier);
- }
- else
- {
- MinecraftExtended.LOGGER.error("Tried to register GuiScreen Supplier multiple times.");
- }
- }
- public static GuiScreen handleGuiRequest(FMLPlayMessages.OpenContainer openContainer)
- {
- ResourceLocation id = openContainer.getId();
- if (GUISUPPLIERS.containsKey(id))
- {
- Supplier<BiFunction<InventoryPlayer, BlockPos, GuiScreen>> returnSupplier = GUISUPPLIERS.get(id);
- EntityPlayerSP player = Minecraft.getInstance().player;
- BlockPos pos = openContainer.getAdditionalData().readBlockPos();
- if (returnSupplier != null && returnSupplier.get() != null)
- {
- return returnSupplier.get().apply(player.inventory, pos);
- }
- }
- return null;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement