76 lines
3.1 KiB
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));
|
|
}
|
|
}
|