Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package pl.kopara.guild.utils;
- import org.bukkit.Bukkit;
- import org.bukkit.ChatColor;
- import org.bukkit.Location;
- import org.bukkit.Material;
- import org.bukkit.command.CommandSender;
- import org.bukkit.command.ConsoleCommandSender;
- import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer;
- import org.bukkit.entity.Entity;
- import org.bukkit.entity.Player;
- import org.bukkit.entity.Projectile;
- import org.bukkit.event.entity.EntityDamageByEntityEvent;
- import org.bukkit.inventory.Inventory;
- import org.bukkit.inventory.ItemStack;
- import org.bukkit.plugin.Plugin;
- import org.bukkit.scheduler.BukkitRunnable;
- import net.minecraft.server.v1_8_R3.IChatBaseComponent;
- import net.minecraft.server.v1_8_R3.IChatBaseComponent.ChatSerializer;
- import net.minecraft.server.v1_8_R3.Packet;
- import net.minecraft.server.v1_8_R3.PacketPlayOutChat;
- import net.minecraft.server.v1_8_R3.PacketPlayOutTitle;
- import net.minecraft.server.v1_8_R3.PacketPlayOutTitle.EnumTitleAction;
- import pl.kopara.guild.GuildPlugin;
- import java.io.File;
- import java.io.FileOutputStream;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.lang.reflect.Field;
- import java.lang.reflect.Method;
- import java.util.*;
- import java.util.regex.Pattern;
- public final class ChatUtil {
- public static String iiIi;
- public static String nmsver;
- static {
- nmsver = Bukkit.getServer().getClass().getPackage().getName();
- nmsver = nmsver.substring(nmsver.lastIndexOf(".") + 1);
- }
- public static Location locFromString(String str) {
- String str2loc[] = str.split(":");
- final Location loc = new Location(Bukkit.getWorlds().get(0), 0.0, 0.0, 0.0, 0.0f, 0.0f);
- loc.setX(Double.parseDouble(str2loc[0]));
- loc.setY(Double.parseDouble(str2loc[1]));
- loc.setZ(Double.parseDouble(str2loc[2]));
- loc.setYaw(Float.parseFloat(str2loc[3]));
- loc.setPitch(Float.parseFloat(str2loc[4]));
- return loc;
- }
- public static ItemStack getItemStackFromString(final String itemstack) {
- final String[] splits = itemstack.split("@");
- final String type = splits[0];
- final String data = (splits.length == 2) ? splits[1] : null;
- if (data == null) {
- return new ItemStack(Material.getMaterial(type), 1);
- }
- return new ItemStack(Material.getMaterial(type), 1, (short)Integer.parseInt(data));
- }
- public static String locToString(final double x, final double y, final double z) {
- return x + ":" + y + ":" + z + ":" + 0f + ":" + 0f;
- }
- public static String locToString(Location loc) {
- return loc.getX() + ":" + loc.getY() + ":" + loc.getZ() + ":" + loc.getYaw() + ":" + loc.getPitch();
- }
- public static String fixColor(String text) {
- text = ChatColor.translateAlternateColorCodes('&', text.replace("§", "&").replace("<<", "«").replace("*", "*"));
- return text;
- }
- public static Collection<String> fixColor(final Collection<String> collection) {
- final Collection<String> local = new ArrayList<String>();
- for (final String s : collection) {
- local.add(fixColor(s));
- }
- return local;
- }
- public static int floor(double value) {
- int i = (int) value;
- return value < i ? i - 1 : i;
- }
- public static double round(double value, int decimals) {
- double p = Math.pow(10, decimals);
- return Math.round(value * p) / p;
- }
- public static String[] fixColor(final String[] array) {
- for (int i = 0; i < array.length; ++i) {
- array[i] = fixColor(array[i]);
- }
- return array;
- }
- public static boolean sendMessage(final CommandSender sender, final String message, final String permission) {
- if (sender instanceof ConsoleCommandSender) {
- sendMessage(sender, message);
- }
- return permission != null && permission != "" && sender.hasPermission(permission) && sendMessage(sender, message);
- }
- public static boolean sendMessage(final CommandSender sender, final String message) {
- if (sender instanceof Player) {
- if (message != null || message != "") {
- sender.sendMessage(fixColor(message));
- }
- } else {
- sender.sendMessage(ChatColor.stripColor(fixColor(message)));
- }
- return true;
- }
- public static void sendTitleMessage(Player player, String title, String subtitle, int fadeIn, int stay, int fadeOut){
- if(title == null){
- title = "";
- }
- if(subtitle == null){
- subtitle = "";
- }
- title = title.replace("&", "§");
- subtitle = subtitle.replace("&", "§");
- CraftPlayer craftPlayer = (CraftPlayer)player;
- IChatBaseComponent chatTitle = ChatSerializer.a("{\"text\": \"" + title + "\"}");
- PacketPlayOutTitle packetTitle = new PacketPlayOutTitle(EnumTitleAction.TITLE, chatTitle);
- craftPlayer.getHandle().playerConnection.sendPacket(packetTitle);
- IChatBaseComponent chatSubtitle = ChatSerializer.a("{\"text\": \"" + subtitle + "\"}");
- PacketPlayOutTitle packetSubtitle = new PacketPlayOutTitle(EnumTitleAction.SUBTITLE, chatSubtitle);
- craftPlayer.getHandle().playerConnection.sendPacket(packetSubtitle);
- }
- public static void sendActionBar(Player player, String message) {
- ActionBarUtil actionBarMessageEvent = new ActionBarUtil(player, message);
- Bukkit.getPluginManager().callEvent(actionBarMessageEvent);
- if (actionBarMessageEvent.isCancelled())
- return;
- try {
- Class<?> c1 = Class.forName("org.bukkit.craftbukkit." + nmsver + ".entity.CraftPlayer");
- Object p = c1.cast(player);
- Object ppoc;
- Class<?> c4 = Class.forName("net.minecraft.server." + nmsver + ".PacketPlayOutChat");
- Class<?> c5 = Class.forName("net.minecraft.server." + nmsver + ".Packet");
- Class<?> c2 = Class.forName("net.minecraft.server." + nmsver + ".ChatComponentText");
- Class<?> c3 = Class.forName("net.minecraft.server." + nmsver + ".IChatBaseComponent");
- Object o = c2.getConstructor(new Class<?>[] { String.class }).newInstance(message);
- ppoc = c4.getConstructor(new Class<?>[] { c3, byte.class }).newInstance(o, (byte) 2);
- Method m1 = c1.getDeclaredMethod("getHandle");
- Object h = m1.invoke(p);
- Field f1 = h.getClass().getDeclaredField("playerConnection");
- Object pc = f1.get(h);
- Method m5 = pc.getClass().getDeclaredMethod("sendPacket", c5);
- m5.invoke(pc, ppoc);
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- }
- public static void sendActionBar(final Player player, final String message, int duration) {
- sendActionBar(player, message);
- if (duration >= 0) {
- new BukkitRunnable() {
- @Override
- public void run() {
- sendActionBar(player, "");
- }
- }.runTaskLater((Plugin) GuildPlugin.getPlugin(), duration + 1);
- }
- while (duration > 60) {
- duration -= 60;
- int sched = duration % 60;
- new BukkitRunnable() {
- @Override
- public void run() {
- sendActionBar(player, message);
- }
- }.runTaskLater((Plugin) GuildPlugin.getPlugin(), (long) sched);
- }
- }
- public static void removeItems(final Player p, final ItemStack... items) {
- final Inventory i = (Inventory) p.getInventory();
- final HashMap<Integer, ItemStack> notStored = (HashMap<Integer, ItemStack>) i.removeItem(items);
- for (final Map.Entry<Integer, ItemStack> e : notStored.entrySet()) {
- }
- }
- public static boolean sendMessage(final Collection<? extends CommandSender> collection, final String message) {
- for (final CommandSender cs : collection) {
- sendMessage(cs, message);
- }
- return true;
- }
- public static boolean sendMessage(final Collection<? extends CommandSender> collection, final String message, final String permission) {
- for (final CommandSender cs : collection) {
- sendMessage(cs, message, permission);
- }
- return true;
- }
- public static boolean containsIgnoreCase(final String[] array, final String element) {
- for (final String s : array) {
- if (s.equalsIgnoreCase(element)) {
- return true;
- }
- }
- return false;
- }
- public static void copy(InputStream in, File file) {
- try {
- OutputStream out = new FileOutputStream(file);
- byte[] buf = new byte[1024];
- int len;
- while ((len = in.read(buf)) > 0) {
- out.write(buf, 0, len);
- }
- out.close();
- in.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- public static Material getMaterial(final String materialName) {
- Material returnMaterial = null;
- if (isInteger(materialName)) {
- final int id = Integer.parseInt(materialName);
- returnMaterial = Material.getMaterial(id);
- }
- else {
- returnMaterial = Material.matchMaterial(materialName);
- }
- return returnMaterial;
- }
- public static void giveItems(final Player p, final ItemStack... items) {
- final Inventory i = (Inventory) p.getInventory();
- final HashMap<Integer, ItemStack> notStored = (HashMap<Integer, ItemStack>) i.addItem(items);
- for (final Map.Entry<Integer, ItemStack> e : notStored.entrySet()) {
- p.getWorld().dropItemNaturally(p.getLocation(), (ItemStack) e.getValue());
- }
- }
- public static Player getDamager(final EntityDamageByEntityEvent e) {
- final Entity damager = e.getDamager();
- if (damager instanceof Player) {
- return (Player) damager;
- }
- if (damager instanceof Projectile) {
- final Projectile p = (Projectile) damager;
- if (p.getShooter() instanceof Player) {
- return (Player) p.getShooter();
- }
- }
- return null;
- }
- public static boolean isAlphaNumeric(final String s) {
- return s.matches("^[a-zA-Z0-9_]*$");
- }
- public static boolean isFloat(final String string) {
- return Pattern.matches("([0-9]*)\\.([0-9]*)", string);
- }
- public static boolean isInteger(final String string) {
- return Pattern.matches("-?[0-9]+", string.subSequence(0, string.length()));
- }
- public static void sendHoverMessageCommand(final Player p, final String s1, final String s2, final String cmd) {
- final IChatBaseComponent msg = IChatBaseComponent.ChatSerializer.a(fixColor("{\"text\":\"" + s1 + "\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"" + s2 + "\"}]}},\"clickEvent\":{\"action\":\"suggest_command\",\"value\":\"" + cmd + "\"}}"));
- final PacketPlayOutChat hover = new PacketPlayOutChat(msg);
- ((CraftPlayer)p).getHandle().playerConnection.sendPacket((Packet<?>)hover);
- }
- public static void sendHoverMessage(final CommandSender p, final String s1, final String s2) {
- final IChatBaseComponent msg = IChatBaseComponent.ChatSerializer.a(fixColor("{\"text\":\"" + s1 + "\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"" + s2 + "\"}]}},\"clickEvent\":{\"action\":\"suggest_command\",\"value\":\"\"}}"));
- final PacketPlayOutChat hover = new PacketPlayOutChat(msg);
- ((CraftPlayer)p).getHandle().playerConnection.sendPacket((Packet<?>)hover);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement