@@ -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 );
0 commit comments