package tc.oc.lobby.bukkit; import java.util.List; import net.minecraft.server.*; import org.bukkit.ChatColor; import org.bukkit.GameMode; import org.bukkit.Material; import org.bukkit.Particle; import org.bukkit.craftbukkit.entity.CraftPlayer; import org.bukkit.craftbukkit.scoreboard.CraftObjective; import org.bukkit.craftbukkit.scoreboard.CraftScoreboard; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.scoreboard.Objective; import tc.oc.commons.bukkit.item.ItemBuilder; public class Utils { public static void displayScoreboard(Player player, Objective objective) { ScoreboardServer server = (ScoreboardServer) ((CraftScoreboard) objective.getScoreboard()).getHandle(); ScoreboardObjective nmsObjective = ((CraftObjective) objective).getHandle(); List<Packet<?>> packets = server.getScoreboardScorePacketsForObjective(nmsObjective); for(Packet packet : packets) { sendPacket(player, packet); } sendPacket(player, new PacketPlayOutScoreboardDisplayObjective(1, nmsObjective)); } public static void removeScore(Player player, String score) { PacketPlayOutScoreboardScore packet = new PacketPlayOutScoreboardScore(score); sendPacket(player, packet); } public static void addScore(Player player, Objective objective, String name, int value) { ScoreboardScore score = new ScoreboardScore(((CraftScoreboard)objective.getScoreboard()).getHandle(), ((CraftObjective) objective).getHandle() , name); score.setScore(value); PacketPlayOutScoreboardScore packet = new PacketPlayOutScoreboardScore(score); sendPacket(player, packet); } private static void sendPacket(Player bukkitPlayer, Packet packet) { EntityPlayer nmsPlayer = ((CraftPlayer) bukkitPlayer).getHandle(); nmsPlayer.playerConnection.sendPacket(packet); } public static void resetPlayer(Player player) { player.getInventory().clear(); player.getInventory().setChestplate(new ItemBuilder().material(Material.ELYTRA).unbreakable(true).get()); player.setGameMode(GameMode.ADVENTURE); player.setAllowFlight(player.hasPermission("lobby.fly")); player.setWalkSpeed(0.2f); player.setFlySpeed(0.1f); player.setPotionParticles(false); player.hideTitle(); player.getWorld().spawnParticle(Particle.CLOUD, player.getLocation(), 15, 0.5, 0.5, 0.5, 0); } public static ItemStack getGhastTear(Player player, int count) { ItemStack raindrops = new ItemStack(Material.GHAST_TEAR); ItemMeta meta = raindrops.getItemMeta(); meta.setDisplayName(ChatColor.AQUA + "Raindrops" + ChatColor.DARK_PURPLE + " | " + ChatColor.WHITE + String.format("%,d", count)); raindrops.setItemMeta(meta); return raindrops; } public static void giveGhastTear(Player player, int count) { player.getInventory().remove(Material.GHAST_TEAR); player.getInventory().setItem(4, getGhastTear(player, count)); } }