diff --git a/inventory-framework-anvil-input/src/main/java/me/devnatan/inventoryframework/AnvilInputNMS.java b/inventory-framework-anvil-input/src/main/java/me/devnatan/inventoryframework/AnvilInputNMS.java index 934b75a05..7fe7f5d71 100644 --- a/inventory-framework-anvil-input/src/main/java/me/devnatan/inventoryframework/AnvilInputNMS.java +++ b/inventory-framework-anvil-input/src/main/java/me/devnatan/inventoryframework/AnvilInputNMS.java @@ -40,7 +40,7 @@ class AnvilInputNMS { private static final MethodHandle SET_PLAYER_ACTIVE_CONTAINER; private static final MethodHandle ADD_CONTAINER_SLOT_LISTENER; private static final MethodHandle INIT_MENU; - private static final MethodHandle GET_TOP_INVENTORY; + private static final MethodHandle GET_TOP_INVENTORY; // FIELDS private static final MethodHandle CONTAINER_CHECK_REACHABLE; @@ -75,7 +75,8 @@ class AnvilInputNMS { CONTAINER, "a", MethodType.methodType(void.class, getNMSClass("world.inventory.ICrafting"))); INIT_MENU = getMethod(ENTITY_PLAYER, "a", MethodType.methodType(void.class, CONTAINER)); - GET_TOP_INVENTORY = getMethod(InventoryView.class, "getTopInventory", MethodType.methodType(Inventory.class)); + GET_TOP_INVENTORY = + getMethod(InventoryView.class, "getTopInventory", MethodType.methodType(Inventory.class)); } catch (Exception exception) { throw new RuntimeException( "Unsupported version for Anvil Input feature: " + ReflectionUtils.getVersionInformation(), @@ -95,7 +96,8 @@ public static Inventory open(Player player, Object title, String initialInput) { final Object anvilContainer = ANVIL_CONSTRUCTOR.invoke(windowId, GET_PLAYER_INVENTORY.invoke(entityPlayer)); CONTAINER_CHECK_REACHABLE.invoke(anvilContainer, false); - final AnvilInventory inventory = (AnvilInventory) GET_TOP_INVENTORY.invoke(InventoryUpdate.getBukkitView.invoke(anvilContainer)); + final AnvilInventory inventory = + (AnvilInventory) GET_TOP_INVENTORY.invoke(InventoryUpdate.getBukkitView.invoke(anvilContainer)); inventory.setMaximumRepairCost(0); diff --git a/inventory-framework-api/src/main/java/me/devnatan/inventoryframework/context/IFCloseContext.java b/inventory-framework-api/src/main/java/me/devnatan/inventoryframework/context/IFCloseContext.java index ff1aa6b74..f406e64ce 100644 --- a/inventory-framework-api/src/main/java/me/devnatan/inventoryframework/context/IFCloseContext.java +++ b/inventory-framework-api/src/main/java/me/devnatan/inventoryframework/context/IFCloseContext.java @@ -39,10 +39,10 @@ public interface IFCloseContext extends IFConfinedContext { @NotNull ViewContainer getContainer(); - /** - * This is an internal inventory-framework API that should not be used from outside of - * this library. No compatibility guarantees are provided. - */ - @ApiStatus.Internal - Object getPlatformEvent(); + /** + * This is an internal inventory-framework API that should not be used from outside of + * this library. No compatibility guarantees are provided. + */ + @ApiStatus.Internal + Object getPlatformEvent(); } diff --git a/inventory-framework-api/src/main/java/me/devnatan/inventoryframework/internal/ElementFactory.java b/inventory-framework-api/src/main/java/me/devnatan/inventoryframework/internal/ElementFactory.java index c7c38909c..97de9a70a 100644 --- a/inventory-framework-api/src/main/java/me/devnatan/inventoryframework/internal/ElementFactory.java +++ b/inventory-framework-api/src/main/java/me/devnatan/inventoryframework/internal/ElementFactory.java @@ -76,7 +76,8 @@ public abstract IFSlotRenderContext createSlotRenderContext( * @param viewer The viewer that is currently the subject of the event of close. * @return A new close context instance. */ - public abstract IFCloseContext createCloseContext(@NotNull Viewer viewer, @NotNull IFRenderContext parent, @NotNull Object origin); + public abstract IFCloseContext createCloseContext( + @NotNull Viewer viewer, @NotNull IFRenderContext parent, @NotNull Object origin); /** * Creates a new platform builder instance. diff --git a/inventory-framework-core/src/main/java/me/devnatan/inventoryframework/pipeline/AvailableSlotInterceptor.java b/inventory-framework-core/src/main/java/me/devnatan/inventoryframework/pipeline/AvailableSlotInterceptor.java index 682604eea..b1cfba866 100644 --- a/inventory-framework-core/src/main/java/me/devnatan/inventoryframework/pipeline/AvailableSlotInterceptor.java +++ b/inventory-framework-core/src/main/java/me/devnatan/inventoryframework/pipeline/AvailableSlotInterceptor.java @@ -119,6 +119,7 @@ List resolveFromLayoutSlot(IFRenderContext context) { private boolean isSlotNotAvailableForAutoFilling(IFRenderContext context, int slot) { if (!context.getContainer().getType().canPlayerInteractOn(slot)) return true; + if (context.getContainer().getSize() >= slot) return false; // fast path -- check for already rendered items if (context.getContainer().hasItem(slot)) return true; diff --git a/inventory-framework-platform-bukkit/src/main/java/me/devnatan/inventoryframework/context/CloseContext.java b/inventory-framework-platform-bukkit/src/main/java/me/devnatan/inventoryframework/context/CloseContext.java index 0902b24b5..a4d4338ae 100644 --- a/inventory-framework-platform-bukkit/src/main/java/me/devnatan/inventoryframework/context/CloseContext.java +++ b/inventory-framework-platform-bukkit/src/main/java/me/devnatan/inventoryframework/context/CloseContext.java @@ -22,22 +22,23 @@ public class CloseContext extends PlatformConfinedContext implements IFCloseCont private final Viewer subject; private final Player player; private final IFRenderContext parent; - private final InventoryCloseEvent closeOrigin; + private final InventoryCloseEvent closeOrigin; private boolean cancelled; @ApiStatus.Internal - public CloseContext(@NotNull Viewer subject, @NotNull IFRenderContext parent, @NotNull InventoryCloseEvent closeOrigin) { + public CloseContext( + @NotNull Viewer subject, @NotNull IFRenderContext parent, @NotNull InventoryCloseEvent closeOrigin) { this.subject = subject; this.player = ((BukkitViewer) subject).getPlayer(); this.parent = parent; - this.closeOrigin = closeOrigin; + this.closeOrigin = closeOrigin; } - @Override - public Object getPlatformEvent() { - return closeOrigin; - } + @Override + public Object getPlatformEvent() { + return closeOrigin; + } // TODO Needs documentation public final @NotNull Player getPlayer() { diff --git a/inventory-framework-platform-bukkit/src/main/java/me/devnatan/inventoryframework/internal/BukkitElementFactory.java b/inventory-framework-platform-bukkit/src/main/java/me/devnatan/inventoryframework/internal/BukkitElementFactory.java index 6cb316e9b..245696266 100644 --- a/inventory-framework-platform-bukkit/src/main/java/me/devnatan/inventoryframework/internal/BukkitElementFactory.java +++ b/inventory-framework-platform-bukkit/src/main/java/me/devnatan/inventoryframework/internal/BukkitElementFactory.java @@ -120,7 +120,8 @@ public IFSlotRenderContext createSlotRenderContext( } @Override - public IFCloseContext createCloseContext(@NotNull Viewer viewer, @NotNull IFRenderContext parent, @NotNull Object closeOrigin) { + public IFCloseContext createCloseContext( + @NotNull Viewer viewer, @NotNull IFRenderContext parent, @NotNull Object closeOrigin) { return new CloseContext(viewer, parent, (InventoryCloseEvent) closeOrigin); } diff --git a/inventory-framework-platform-minestom/src/main/kotlin/me/devnatan/inventoryframework/IFInventoryListener.kt b/inventory-framework-platform-minestom/src/main/kotlin/me/devnatan/inventoryframework/IFInventoryListener.kt index b6c853d65..1bf46577f 100644 --- a/inventory-framework-platform-minestom/src/main/kotlin/me/devnatan/inventoryframework/IFInventoryListener.kt +++ b/inventory-framework-platform-minestom/src/main/kotlin/me/devnatan/inventoryframework/IFInventoryListener.kt @@ -88,7 +88,8 @@ internal class IFInventoryListener( val context: IFRenderContext = viewer.activeContext val root: RootView = context.getRoot() - val closeContext: IFCloseContext = root.elementFactory.createCloseContext(viewer, context, event) + val closeContext: IFCloseContext = + root.elementFactory.createCloseContext(viewer, context, event) root.pipeline.execute(StandardPipelinePhases.CLOSE, closeContext) } diff --git a/inventory-framework-platform-minestom/src/main/kotlin/me/devnatan/inventoryframework/context/CloseContext.kt b/inventory-framework-platform-minestom/src/main/kotlin/me/devnatan/inventoryframework/context/CloseContext.kt index f4af87f52..214046a39 100644 --- a/inventory-framework-platform-minestom/src/main/kotlin/me/devnatan/inventoryframework/context/CloseContext.kt +++ b/inventory-framework-platform-minestom/src/main/kotlin/me/devnatan/inventoryframework/context/CloseContext.kt @@ -20,7 +20,7 @@ class CloseContext constructor( subject: Viewer, private val parent: IFRenderContext, - val origin: InventoryCloseEvent + val origin: InventoryCloseEvent, ) : PlatformConfinedContext(), IFCloseContext, Context { diff --git a/inventory-framework-platform-minestom/src/main/kotlin/me/devnatan/inventoryframework/internal/MinestomElementFactory.kt b/inventory-framework-platform-minestom/src/main/kotlin/me/devnatan/inventoryframework/internal/MinestomElementFactory.kt index cabe0fb50..11e290abf 100644 --- a/inventory-framework-platform-minestom/src/main/kotlin/me/devnatan/inventoryframework/internal/MinestomElementFactory.kt +++ b/inventory-framework-platform-minestom/src/main/kotlin/me/devnatan/inventoryframework/internal/MinestomElementFactory.kt @@ -166,7 +166,11 @@ class MinestomElementFactory : ElementFactory() { viewer: Viewer?, ): IFSlotRenderContext = SlotRenderContext(slot, parent, viewer) - override fun createCloseContext(viewer: Viewer, parent: IFRenderContext, origin: Any): IFCloseContext = CloseContext(viewer, parent,origin as InventoryCloseEvent) + override fun createCloseContext( + viewer: Viewer, + parent: IFRenderContext, + origin: Any, + ): IFCloseContext = CloseContext(viewer, parent, origin as InventoryCloseEvent) override fun createComponentBuilder(root: VirtualView): ComponentBuilder<*, Context> = MinestomItemComponentBuilder(root) diff --git a/inventory-framework-test/src/main/java/me/devnatan/inventoryframework/internal/MockElementFactory.java b/inventory-framework-test/src/main/java/me/devnatan/inventoryframework/internal/MockElementFactory.java index d695c1bc5..d1d311faa 100644 --- a/inventory-framework-test/src/main/java/me/devnatan/inventoryframework/internal/MockElementFactory.java +++ b/inventory-framework-test/src/main/java/me/devnatan/inventoryframework/internal/MockElementFactory.java @@ -96,11 +96,12 @@ public IFSlotRenderContext createSlotRenderContext( } @Override - public IFCloseContext createCloseContext(@NotNull Viewer viewer, @NotNull IFRenderContext parent, @NotNull Object origin) { + public IFCloseContext createCloseContext( + @NotNull Viewer viewer, @NotNull IFRenderContext parent, @NotNull Object origin) { IFCloseContext mock = mock(IFCloseContext.class); when(mock.getViewer()).thenReturn(viewer); when(mock.getParent()).thenReturn(parent); - when(mock.getPlatformEvent()).thenReturn(origin); + when(mock.getPlatformEvent()).thenReturn(origin); return mock; }