Class PlatformRenderContext<T extends me.devnatan.inventoryframework.component.ItemComponentBuilder<T,C>,C extends me.devnatan.inventoryframework.context.IFContext>

java.lang.Object
me.devnatan.inventoryframework.state.DefaultStateValueHost
All Implemented Interfaces:
Iterable<me.devnatan.inventoryframework.component.Component>, me.devnatan.inventoryframework.component.ComponentContainer, me.devnatan.inventoryframework.context.IFConfinedContext, me.devnatan.inventoryframework.context.IFContext, me.devnatan.inventoryframework.context.IFRenderContext, me.devnatan.inventoryframework.state.StateValueHost, me.devnatan.inventoryframework.VirtualView

public abstract class PlatformRenderContext<T extends me.devnatan.inventoryframework.component.ItemComponentBuilder<T,C>,C extends me.devnatan.inventoryframework.context.IFContext> extends PlatformConfinedContext implements me.devnatan.inventoryframework.context.IFRenderContext
  • Field Details

  • Constructor Details

    • PlatformRenderContext

      PlatformRenderContext(@NotNull @NotNull UUID id, @NotNull @NotNull PlatformView root, @NotNull @NotNull me.devnatan.inventoryframework.ViewConfig config, me.devnatan.inventoryframework.ViewContainer container, @NotNull @NotNull Map<String,me.devnatan.inventoryframework.Viewer> viewers, me.devnatan.inventoryframework.Viewer subject, Object initialData)
  • Method Details

    • unsetSlot

      @Experimental public final T unsetSlot()
      Creates a new item builder without a specified slot.

      This function is for creating items whose slot is set dynamically during item rendering.

      
       unsetSlot().onRender(render -> {
           render.setItem(...);
           render.setSlot(...);
       });
       

      This API is experimental and is not subject to the general compatibility guarantees such API may be changed or may be removed completely in any further release.

      Returns:
      An item builder to configure the item.
    • slot

      @NotNull public final T slot(int slot)
      Adds an item to a specific slot in the context container.
      Parameters:
      slot - The slot in which the item will be positioned.
      Returns:
      An item builder to configure the item.
    • slot

      @NotNull public final T slot(int row, int column)
      Adds an item at the specific column and ROW (X, Y) in that context's container.
      Parameters:
      row - The row (Y) in which the item will be positioned.
      column - The column (X) in which the item will be positioned.
      Returns:
      An item builder to configure the item.
    • firstSlot

      @NotNull public final T firstSlot()
      Sets an item in the first slot of this context's container.
      Returns:
      An item builder to configure the item.
    • lastSlot

      @NotNull public final T lastSlot()
      Sets an item in the last slot of this context's container.
      Returns:
      An item builder to configure the item.
    • availableSlot

      @NotNull public final T availableSlot()
      Adds an item in the next available slot of this context's container.
      Returns:
      An item builder to configure the item.
    • availableSlot

      public final void availableSlot(@NotNull @NotNull BiConsumer<Integer,T> factory)
      Adds an item in the next available slot of this context's container.
      
       availableSlot((index, builder) -> builder.withItem(...));
       
      Parameters:
      factory - A factory to create the item builder to configure the item. The first parameter is the iteration index of the available slot.
    • layoutSlot

      @NotNull public final T layoutSlot(char character)
      Defines the item that will represent a character provided in the context layout.
      Parameters:
      character - The layout character target.
      Returns:
      An item builder to configure the item.
    • layoutSlot

      public final void layoutSlot(char character, @NotNull @NotNull BiConsumer<Integer,T> factory)
      Defines the item that will represent a character provided in the context layout.
      
       layoutSlot('F', (index, builder) -> builder.withItem(...));
       
      Parameters:
      character - The layout character target.
    • resultSlot

      @Experimental @NotNull public final T resultSlot()

      This API is experimental and is not subject to the general compatibility guarantees such API may be changed or may be removed completely in any further release.

    • getId

      @NotNull public final @NotNull UUID getId()
      Specified by:
      getId in interface me.devnatan.inventoryframework.context.IFContext
    • getContainer

      @NotNull public final @NotNull me.devnatan.inventoryframework.ViewContainer getContainer()
      Specified by:
      getContainer in interface me.devnatan.inventoryframework.context.IFRenderContext
    • setContainer

      @Internal public void setContainer(me.devnatan.inventoryframework.ViewContainer container)
    • getConfig

      @NotNull public final @NotNull me.devnatan.inventoryframework.ViewConfig getConfig()
      Specified by:
      getConfig in interface me.devnatan.inventoryframework.context.IFContext
    • getIndexedViewers

      @NotNull public final @NotNull Map<String,me.devnatan.inventoryframework.Viewer> getIndexedViewers()
      Specified by:
      getIndexedViewers in interface me.devnatan.inventoryframework.context.IFContext
    • getInitialData

      public final Object getInitialData()
      Specified by:
      getInitialData in interface me.devnatan.inventoryframework.context.IFContext
    • setInitialData

      public void setInitialData(Object initialData)
      Specified by:
      setInitialData in interface me.devnatan.inventoryframework.context.IFContext
    • getViewer

      public final me.devnatan.inventoryframework.Viewer getViewer()
      Specified by:
      getViewer in interface me.devnatan.inventoryframework.context.IFConfinedContext
      Specified by:
      getViewer in class PlatformConfinedContext
    • getComponentFactories

      @NotNull public final @NotNull @UnmodifiableView List<me.devnatan.inventoryframework.component.ComponentFactory> getComponentFactories()
      Specified by:
      getComponentFactories in interface me.devnatan.inventoryframework.context.IFRenderContext
    • getLayoutSlots

      @NotNull public final @NotNull List<me.devnatan.inventoryframework.internal.LayoutSlot> getLayoutSlots()
      Specified by:
      getLayoutSlots in interface me.devnatan.inventoryframework.context.IFRenderContext
    • addLayoutSlot

      public final void addLayoutSlot(@NotNull @NotNull me.devnatan.inventoryframework.internal.LayoutSlot layoutSlot)
      Specified by:
      addLayoutSlot in interface me.devnatan.inventoryframework.context.IFRenderContext
    • getAvailableSlotFactories

      public final List<BiFunction<Integer,Integer,me.devnatan.inventoryframework.component.ComponentFactory>> getAvailableSlotFactories()
      Specified by:
      getAvailableSlotFactories in interface me.devnatan.inventoryframework.context.IFRenderContext
    • closeForPlayer

      public final void closeForPlayer()
      Specified by:
      closeForPlayer in interface me.devnatan.inventoryframework.context.IFConfinedContext
      Overrides:
      closeForPlayer in class PlatformConfinedContext
    • openForPlayer

      public final void openForPlayer(@NotNull @NotNull Class<? extends me.devnatan.inventoryframework.RootView> other)
      Specified by:
      openForPlayer in interface me.devnatan.inventoryframework.context.IFConfinedContext
      Overrides:
      openForPlayer in class PlatformConfinedContext
    • openForPlayer

      public final void openForPlayer(@NotNull @NotNull Class<? extends me.devnatan.inventoryframework.RootView> other, Object initialData)
      Specified by:
      openForPlayer in interface me.devnatan.inventoryframework.context.IFConfinedContext
      Overrides:
      openForPlayer in class PlatformConfinedContext
    • updateTitleForPlayer

      public final void updateTitleForPlayer(@NotNull @NotNull String title)
      Specified by:
      updateTitleForPlayer in interface me.devnatan.inventoryframework.context.IFConfinedContext
      Overrides:
      updateTitleForPlayer in class PlatformConfinedContext
    • updateTitleForPlayer

      public void updateTitleForPlayer(@NotNull @NotNull Object title)
      Specified by:
      updateTitleForPlayer in interface me.devnatan.inventoryframework.context.IFConfinedContext
      Overrides:
      updateTitleForPlayer in class PlatformConfinedContext
    • resetTitleForPlayer

      public final void resetTitleForPlayer()
      Specified by:
      resetTitleForPlayer in interface me.devnatan.inventoryframework.context.IFConfinedContext
      Overrides:
      resetTitleForPlayer in class PlatformConfinedContext
    • isRendered

      public final boolean isRendered()
      Specified by:
      isRendered in interface me.devnatan.inventoryframework.context.IFRenderContext
    • setRendered

      @Internal public final void setRendered()
      This is an internal inventory-framework API that should not be used from outside of this library. No compatibility guarantees are provided.
    • createBuilder

      protected abstract T createBuilder()
      Creates a new PlatformRenderContext instance for the current platform.
      Returns:
      A new platform builder instance.
    • createRegisteredBuilder

      protected final T createRegisteredBuilder()
      Creates a new platform builder instance and registers it.
      Returns:
      A new registered platform builder instance.
    • getViewers

      @NotNull public final List<me.devnatan.inventoryframework.Viewer> getViewers()
      Specified by:
      getViewers in interface me.devnatan.inventoryframework.context.IFContext
    • addViewer

      public final void addViewer(@NotNull me.devnatan.inventoryframework.Viewer arg0)
      Specified by:
      addViewer in interface me.devnatan.inventoryframework.context.IFContext
    • removeViewer

      public final void removeViewer(@NotNull me.devnatan.inventoryframework.Viewer arg0)
      Specified by:
      removeViewer in interface me.devnatan.inventoryframework.context.IFContext
    • getInitialTitle

      @NotNull public final String getInitialTitle()
      Specified by:
      getInitialTitle in interface me.devnatan.inventoryframework.context.IFContext
    • getComponents

      @NotNull public List<me.devnatan.inventoryframework.component.Component> getComponents()
      Specified by:
      getComponents in interface me.devnatan.inventoryframework.component.ComponentContainer
    • getInternalComponents

      public List<me.devnatan.inventoryframework.component.Component> getInternalComponents()
      Specified by:
      getInternalComponents in interface me.devnatan.inventoryframework.component.ComponentContainer
    • getComponentsAt

      public List<me.devnatan.inventoryframework.component.Component> getComponentsAt(int arg0)
      Specified by:
      getComponentsAt in interface me.devnatan.inventoryframework.context.IFContext
    • addComponent

      public void addComponent(@NotNull me.devnatan.inventoryframework.component.Component arg0)
      Specified by:
      addComponent in interface me.devnatan.inventoryframework.context.IFContext
    • removeComponent

      public void removeComponent(@NotNull me.devnatan.inventoryframework.component.Component arg0)
      Specified by:
      removeComponent in interface me.devnatan.inventoryframework.context.IFContext
    • renderComponent

      public void renderComponent(@NotNull me.devnatan.inventoryframework.component.Component arg0)
      Specified by:
      renderComponent in interface me.devnatan.inventoryframework.context.IFContext
    • updateComponent

      public void updateComponent(@NotNull me.devnatan.inventoryframework.component.Component arg0, boolean arg1)
      Specified by:
      updateComponent in interface me.devnatan.inventoryframework.context.IFContext
    • performClickInComponent

      public void performClickInComponent(@NotNull me.devnatan.inventoryframework.component.Component arg0, @NotNull me.devnatan.inventoryframework.Viewer arg1, @NotNull me.devnatan.inventoryframework.ViewContainer arg2, Object arg3, int arg4, boolean arg5)
      Specified by:
      performClickInComponent in interface me.devnatan.inventoryframework.context.IFContext
    • update

      public void update()
      Specified by:
      update in interface me.devnatan.inventoryframework.context.IFContext
    • isShared

      public final boolean isShared()
      Specified by:
      isShared in interface me.devnatan.inventoryframework.context.IFContext
    • iterator

      @NotNull public final Iterator<me.devnatan.inventoryframework.component.Component> iterator()
      Specified by:
      iterator in interface Iterable<me.devnatan.inventoryframework.component.Component>
    • tryThrowDoNotWorkWithSharedContext

      final void tryThrowDoNotWorkWithSharedContext()
    • tryThrowDoNotWorkWithSharedContext

      final void tryThrowDoNotWorkWithSharedContext(String arg0)