@Override public void run(int playerId) { SpoutPlayer player = SpoutManager.getPlayerFromId(playerId); ScreenEvent event; switch (ScreenAction.getScreenActionFromId(action)) { case Close: event = new ScreenCloseEvent( player, player.getMainScreen().getActivePopup(), ScreenType.getType(this.screen)); Bukkit.getServer().getPluginManager().callEvent(event); if (event.isCancelled()) { handleScreenCloseCancelled(player, (ScreenCloseEvent) event, true); } else if (ScreenType.getType(this.screen) == ScreenType.CUSTOM_SCREEN) { handleScreenClose(player, (ScreenCloseEvent) event, true); } if (!event.isCancelled()) { player.openScreen(ScreenType.GAME_SCREEN, false); } break; case Open: event = new ScreenOpenEvent( player, player.getMainScreen().getActivePopup(), ScreenType.getType(this.screen)); Bukkit.getServer().getPluginManager().callEvent(event); if (event.isCancelled()) { PopupScreen screen = player.getMainScreen().getActivePopup(); if (screen != null) { screen.setDirty(true); player.sendImmediatePacket(new PacketWidget(screen, screen.getId())); } } else { player.openScreen(ScreenType.getType(this.screen), false); } break; } }
public PacketScreenAction(ScreenAction action, ScreenType screen) { this.action = (byte) action.getId(); this.screen = (byte) screen.getCode(); }