Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -38,4 +38,11 @@ public interface IFCloseContext extends IFConfinedContext {
*/
@NotNull
ViewContainer getContainer();

/**
* <b><i> This is an internal inventory-framework API that should not be used from outside of
* this library. No compatibility guarantees are provided. </i></b>
*/
@ApiStatus.Internal
Object getPlatformEvent();
}
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ 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);
public abstract IFCloseContext createCloseContext(@NotNull Viewer viewer, @NotNull IFRenderContext parent, @NotNull Object origin);

/**
* Creates a new platform builder instance.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ public void onInventoryClose(final InventoryCloseEvent event) {

final IFRenderContext context = viewer.getCurrentContext();
final RootView root = context.getRoot();
final IFCloseContext closeContext = root.getElementFactory().createCloseContext(viewer, context);
final IFCloseContext closeContext = root.getElementFactory().createCloseContext(viewer, context, event);

root.getPipeline().execute(StandardPipelinePhases.CLOSE, closeContext);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import me.devnatan.inventoryframework.state.StateValue;
import me.devnatan.inventoryframework.state.StateWatcher;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryCloseEvent;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.UnmodifiableView;
Expand All @@ -21,16 +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 boolean cancelled;

@ApiStatus.Internal
public CloseContext(@NotNull Viewer subject, @NotNull IFRenderContext parent) {
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;
}

@Override
public Object getPlatformEvent() {
return closeOrigin;
}

// TODO Needs documentation
public final @NotNull Player getPlayer() {
return player;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import me.devnatan.inventoryframework.logging.NoopLogger;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryCloseEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.InventoryHolder;
import org.bukkit.plugin.Plugin;
Expand Down Expand Up @@ -119,8 +120,8 @@ public IFSlotRenderContext createSlotRenderContext(
}

@Override
public IFCloseContext createCloseContext(@NotNull Viewer viewer, @NotNull IFRenderContext parent) {
return new CloseContext(viewer, parent);
public IFCloseContext createCloseContext(@NotNull Viewer viewer, @NotNull IFRenderContext parent, @NotNull Object closeOrigin) {
return new CloseContext(viewer, parent, (InventoryCloseEvent) closeOrigin);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ internal class IFInventoryListener(

val context: IFRenderContext = viewer.activeContext
val root: RootView = context.getRoot()
val closeContext: IFCloseContext = root.elementFactory.createCloseContext(viewer, context)
val closeContext: IFCloseContext = root.elementFactory.createCloseContext(viewer, context, event)

root.pipeline.execute(StandardPipelinePhases.CLOSE, closeContext)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import me.devnatan.inventoryframework.state.StateValue
import me.devnatan.inventoryframework.state.StateWatcher
import net.kyori.adventure.text.Component
import net.minestom.server.entity.Player
import net.minestom.server.event.inventory.InventoryCloseEvent
import org.jetbrains.annotations.ApiStatus
import org.jetbrains.annotations.UnmodifiableView
import java.util.UUID
Expand All @@ -19,6 +20,7 @@ class CloseContext
constructor(
subject: Viewer,
private val parent: IFRenderContext,
val origin: InventoryCloseEvent
) : PlatformConfinedContext(),
IFCloseContext,
Context {
Expand All @@ -27,6 +29,8 @@ class CloseContext

private var cancelled = false

override fun getPlatformEvent(): Any = origin

override val allPlayers: List<Player>
get() = getParent().allPlayers

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ import me.devnatan.inventoryframework.logging.Logger
import me.devnatan.inventoryframework.logging.NoopLogger
import net.kyori.adventure.text.Component.text
import net.minestom.server.entity.Player
import net.minestom.server.event.inventory.InventoryCloseEvent
import net.minestom.server.event.inventory.InventoryPreClickEvent
import net.minestom.server.inventory.Inventory
import net.minestom.server.inventory.InventoryType
Expand Down Expand Up @@ -165,10 +166,7 @@ class MinestomElementFactory : ElementFactory() {
viewer: Viewer?,
): IFSlotRenderContext = SlotRenderContext(slot, parent, viewer)

override fun createCloseContext(
viewer: Viewer,
parent: IFRenderContext,
): IFCloseContext = CloseContext(viewer, parent)
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)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,10 +96,11 @@ public IFSlotRenderContext createSlotRenderContext(
}

@Override
public IFCloseContext createCloseContext(@NotNull Viewer viewer, @NotNull IFRenderContext parent) {
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);
return mock;
}

Expand Down
Loading