package pw.hwk.tutorial; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import pw.hwk.tutorial.api.EndTutorialEvent; import pw.hwk.tutorial.data.Caching; import pw.hwk.tutorial.data.DataLoading; import pw.hwk.tutorial.data.TutorialManager; import pw.hwk.tutorial.data.TutorialPlayer; import pw.hwk.tutorial.enums.CommandType; import pw.hwk.tutorial.util.TutorialUtils; public class EndTutorial { private ServerTutorial plugin; public EndTutorial(ServerTutorial plugin) { this.plugin = plugin; } public void endTutorial(Player player) { Tutorial tutorial = TutorialManager.getManager().getCurrentTutorial(player.getName()); endTutorialPlayer(player, tutorial.getEndMessage()); EndTutorialEvent event = new EndTutorialEvent(player, tutorial); plugin.getServer().getPluginManager().callEvent(event); TutorialManager.getManager().setSeenTutorial(Caching.getCaching().getUUID(player), tutorial.getName()); String command = tutorial.getCommand(); CommandType type = tutorial.getCommandType(); if (type == CommandType.NONE || command == null || command.isEmpty()) { return; } if (command.startsWith("/")) { command = command.replaceFirst("/", ""); } command = command.replace("%player%", player.getName()); switch (type) { case PLAYER: Bukkit.dispatchCommand(player, command); break; case CONSOLE: Bukkit.dispatchCommand(Bukkit.getConsoleSender(), command); break; } TutorialPlayer tutorialPlayer = plugin.getTutorialPlayer(Caching.getCaching().getUUID(player)); tutorialPlayer.restorePlayer(player); plugin.getTempPlayers().remove(player.getUniqueId()); DataLoading.getDataLoading().getTempData().set("players." + player.getUniqueId(), null); DataLoading.getDataLoading().saveTempData(); } public void endTutorialPlayer(final Player player, String endMessage) { player.sendMessage(TutorialUtils.color(endMessage)); player.closeInventory(); Caching.getCaching().setTeleport(player, true); TutorialPlayer tutorialPlayer = plugin.getTutorialPlayer(Caching.getCaching().getUUID(player)); tutorialPlayer.restorePlayer(player); plugin.removeTutorialPlayer(player); plugin.removeFromTutorial(player.getName()); plugin.getTempPlayers().remove(player.getUniqueId()); DataLoading.getDataLoading().getTempData().set("players." + player.getUniqueId(), null); DataLoading.getDataLoading().saveTempData(); } public void reloadEndTutorial(Player player) { Tutorial tutorial = TutorialManager.getManager().getCurrentTutorial(player.getName()); endTutorialPlayer(player, tutorial.getEndMessage()); } }