package in.twizmwaz.cardinal.module.modules.tutorial; import in.twizmwaz.cardinal.chat.ChatConstant; import in.twizmwaz.cardinal.chat.LocalizedChatMessage; import in.twizmwaz.cardinal.util.ChatUtils; import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.Sound; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; public class DisplayHandler { private Player player; private Tutorial tutorial; private int pos = 0; public DisplayHandler(Player player, Tutorial tutorial) { this.player = player; this.tutorial = tutorial; } public void displayNext() { if (++this.pos >= this.tutorial.getAllStages().size()) { this.pos = this.tutorial.getAllStages().size() - 1; return; } this.displayCurrent(); } public void displayPrev() { if (--this.pos < 0) { this.pos = 0; return; } this.displayCurrent(); } private void displayCurrent() { Stage stage = this.tutorial.getAllStages().get(this.pos); if (stage == this.tutorial.getPrefix() || stage == this.tutorial.getSuffix()) { this.player.playSound(this.player.getLocation(), Sound.PISTON_EXTEND, 0.5f, 2); if (stage == this.tutorial.getPrefix()) { this.player.sendMessage(""); } } this.player.sendMessage(""); this.player.sendMessage(stage.getFormattedTitle()); for (String line: stage.getLines()) { this.player.sendMessage(line); } this.player.sendMessage(""); if (stage.getTeleport() != null) { Location location = stage.getTeleport().getRandomPoint().getLocation(); if (!location.getBlock().getType().equals(Material.AIR) || !location.add(0, 1, 0).getBlock().getType().equals(Material.AIR)) { this.player.sendMessage(" " + ChatColor.YELLOW + new LocalizedChatMessage(ChatConstant.ERROR_TUTORIAL_TP).getMessage(ChatUtils.getLocale(this.player))); } else { this.player.setFlying(true); this.player.teleport(stage.getTeleport().getRandomPoint().getLocation()); this.player.playSound(this.player.getLocation(), Sound.ENDERMAN_TELEPORT, 0.5f, 1); } } this.updateItem(player); } private void updateItem(Player player) { ItemStack emerald = player.getItemInHand(); ItemMeta meta = emerald.getItemMeta(); String left = null; String right = null; StringBuilder name = new StringBuilder(); String sep = ""; if (this.pos > 0) { left = ChatColor.RED + this.tutorial.getAllStages().get(this.pos - 1).getTitle(); } if (this.pos < this.tutorial.getAllStages().size() - 1) { right = ChatColor.GREEN + this.tutorial.getAllStages().get(this.pos + 1).getTitle(); } if (left != null && right != null) { sep = ChatColor.AQUA + " | "; } if (left != null) { name.append(ChatColor.GRAY).append("Left click ").append(ChatColor.AQUA).append("« ").append(left).append(sep); } if (right != null) { name.append(right).append(" ").append(ChatColor.AQUA).append("» ").append(ChatColor.GRAY).append("Right click"); } meta.setDisplayName(name.toString()); emerald.setItemMeta(meta); for (int pos: player.getInventory().all(Material.EMERALD).keySet()) { player.getInventory().setItem(pos, emerald); } } }