ProjectAres/Lobby/src/main/java/tc/oc/lobby/bukkit/Utils.java

76 lines
3.1 KiB
Java

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));
}
}