Skip to content

Commit 82e5408

Browse files
Fix Window closeable
1 parent 43263e3 commit 82e5408

File tree

2 files changed

+10
-9
lines changed

2 files changed

+10
-9
lines changed

invui-core/src/main/java/xyz/xenondevs/invui/window/AbstractWindow.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -181,12 +181,14 @@ public void handleOpenEvent(InventoryOpenEvent event) {
181181
}
182182
}
183183

184-
public void handleCloseEvent(Player player) {
185-
if (closeable) {
184+
public void handleCloseEvent(Player player, boolean forceClose) {
185+
if (closeable || forceClose) {
186186
if (!currentlyOpen)
187187
throw new IllegalStateException("Window is already closed!");
188188

189+
closeable = true;
189190
currentlyOpen = false;
191+
190192
remove();
191193

192194
// handleClosed() might have already been called by open() if the window was replaced by another one
@@ -198,9 +200,8 @@ public void handleCloseEvent(Player player) {
198200
if (closeHandlers != null) {
199201
closeHandlers.forEach(Runnable::run);
200202
}
201-
} else {
202-
if (player.equals(getViewer()))
203-
Bukkit.getScheduler().runTaskLater(InvUI.getInstance().getPlugin(), this::open, 0);
203+
} else if (player.equals(getViewer())) {
204+
Bukkit.getScheduler().runTaskLater(InvUI.getInstance().getPlugin(), () -> openInventory(player), 0);
204205
}
205206
}
206207

@@ -282,9 +283,9 @@ public void close() {
282283
public void open() {
283284
Player viewer = getViewer();
284285
if (viewer == null)
285-
throw new IllegalStateException("The player is not online.");
286+
throw new IllegalStateException("Viewer is not online");
286287
if (currentlyOpen)
287-
throw new IllegalStateException("Window is already opened!");
288+
throw new IllegalStateException("Window is already open");
288289

289290
// call handleClosed() close for currently open window
290291
AbstractWindow openWindow = (AbstractWindow) WindowManager.getInstance().getOpenWindow(viewer);

invui-core/src/main/java/xyz/xenondevs/invui/window/WindowManager.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ private void handleInventoryClose(InventoryCloseEvent event) {
124124
Player player = (Player) event.getPlayer();
125125
AbstractWindow window = (AbstractWindow) getWindow(event.getInventory());
126126
if (window != null) {
127-
window.handleCloseEvent(player);
127+
window.handleCloseEvent(player, false);
128128
}
129129

130130
windowsByPlayer.remove(player);
@@ -144,7 +144,7 @@ private void handlePlayerQuit(PlayerQuitEvent event) {
144144
Player player = event.getPlayer();
145145
AbstractWindow window = (AbstractWindow) getOpenWindow(player);
146146
if (window != null) {
147-
window.handleCloseEvent(player);
147+
window.handleCloseEvent(player, true);
148148
windowsByPlayer.remove(player);
149149
}
150150
}

0 commit comments

Comments
 (0)