Advertisement
Kraftowany

Untitled

Nov 21st, 2018
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.78 KB | None | 0 0
  1. package pl.kopara.guild.utils;
  2.  
  3. import org.bukkit.Bukkit;
  4. import org.bukkit.ChatColor;
  5. import org.bukkit.Location;
  6. import org.bukkit.Material;
  7. import org.bukkit.command.CommandSender;
  8. import org.bukkit.command.ConsoleCommandSender;
  9. import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer;
  10. import org.bukkit.entity.Entity;
  11. import org.bukkit.entity.Player;
  12. import org.bukkit.entity.Projectile;
  13. import org.bukkit.event.entity.EntityDamageByEntityEvent;
  14. import org.bukkit.inventory.Inventory;
  15. import org.bukkit.inventory.ItemStack;
  16. import org.bukkit.plugin.Plugin;
  17. import org.bukkit.scheduler.BukkitRunnable;
  18.  
  19. import net.minecraft.server.v1_8_R3.IChatBaseComponent;
  20. import net.minecraft.server.v1_8_R3.IChatBaseComponent.ChatSerializer;
  21. import net.minecraft.server.v1_8_R3.Packet;
  22. import net.minecraft.server.v1_8_R3.PacketPlayOutChat;
  23. import net.minecraft.server.v1_8_R3.PacketPlayOutTitle;
  24. import net.minecraft.server.v1_8_R3.PacketPlayOutTitle.EnumTitleAction;
  25. import pl.kopara.guild.GuildPlugin;
  26.  
  27. import java.io.File;
  28. import java.io.FileOutputStream;
  29. import java.io.InputStream;
  30. import java.io.OutputStream;
  31. import java.lang.reflect.Field;
  32. import java.lang.reflect.Method;
  33. import java.util.*;
  34. import java.util.regex.Pattern;
  35.  
  36. public final class ChatUtil {
  37.  
  38. public static String iiIi;
  39. public static String nmsver;
  40.  
  41. static {
  42. nmsver = Bukkit.getServer().getClass().getPackage().getName();
  43. nmsver = nmsver.substring(nmsver.lastIndexOf(".") + 1);
  44. }
  45. public static Location locFromString(String str) {
  46. String str2loc[] = str.split(":");
  47. final Location loc = new Location(Bukkit.getWorlds().get(0), 0.0, 0.0, 0.0, 0.0f, 0.0f);
  48. loc.setX(Double.parseDouble(str2loc[0]));
  49. loc.setY(Double.parseDouble(str2loc[1]));
  50. loc.setZ(Double.parseDouble(str2loc[2]));
  51. loc.setYaw(Float.parseFloat(str2loc[3]));
  52. loc.setPitch(Float.parseFloat(str2loc[4]));
  53. return loc;
  54. }
  55.  
  56. public static ItemStack getItemStackFromString(final String itemstack) {
  57. final String[] splits = itemstack.split("@");
  58. final String type = splits[0];
  59. final String data = (splits.length == 2) ? splits[1] : null;
  60. if (data == null) {
  61. return new ItemStack(Material.getMaterial(type), 1);
  62. }
  63. return new ItemStack(Material.getMaterial(type), 1, (short)Integer.parseInt(data));
  64. }
  65.  
  66.  
  67. public static String locToString(final double x, final double y, final double z) {
  68. return x + ":" + y + ":" + z + ":" + 0f + ":" + 0f;
  69. }
  70.  
  71. public static String locToString(Location loc) {
  72. return loc.getX() + ":" + loc.getY() + ":" + loc.getZ() + ":" + loc.getYaw() + ":" + loc.getPitch();
  73. }
  74.  
  75. public static String fixColor(String text) {
  76. text = ChatColor.translateAlternateColorCodes('&', text.replace("§", "&").replace("<<", "«").replace("*", "*"));
  77. return text;
  78. }
  79.  
  80. public static Collection<String> fixColor(final Collection<String> collection) {
  81. final Collection<String> local = new ArrayList<String>();
  82. for (final String s : collection) {
  83. local.add(fixColor(s));
  84. }
  85. return local;
  86. }
  87.  
  88. public static int floor(double value) {
  89. int i = (int) value;
  90. return value < i ? i - 1 : i;
  91. }
  92.  
  93.  
  94. public static double round(double value, int decimals) {
  95. double p = Math.pow(10, decimals);
  96. return Math.round(value * p) / p;
  97. }
  98.  
  99. public static String[] fixColor(final String[] array) {
  100. for (int i = 0; i < array.length; ++i) {
  101. array[i] = fixColor(array[i]);
  102. }
  103. return array;
  104. }
  105.  
  106. public static boolean sendMessage(final CommandSender sender, final String message, final String permission) {
  107. if (sender instanceof ConsoleCommandSender) {
  108. sendMessage(sender, message);
  109. }
  110. return permission != null && permission != "" && sender.hasPermission(permission) && sendMessage(sender, message);
  111. }
  112.  
  113. public static boolean sendMessage(final CommandSender sender, final String message) {
  114. if (sender instanceof Player) {
  115. if (message != null || message != "") {
  116. sender.sendMessage(fixColor(message));
  117. }
  118. } else {
  119. sender.sendMessage(ChatColor.stripColor(fixColor(message)));
  120. }
  121. return true;
  122. }
  123.  
  124. public static void sendTitleMessage(Player player, String title, String subtitle, int fadeIn, int stay, int fadeOut){
  125. if(title == null){
  126. title = "";
  127. }
  128. if(subtitle == null){
  129. subtitle = "";
  130. }
  131.  
  132. title = title.replace("&", "§");
  133. subtitle = subtitle.replace("&", "§");
  134.  
  135. CraftPlayer craftPlayer = (CraftPlayer)player;
  136.  
  137. IChatBaseComponent chatTitle = ChatSerializer.a("{\"text\": \"" + title + "\"}");
  138. PacketPlayOutTitle packetTitle = new PacketPlayOutTitle(EnumTitleAction.TITLE, chatTitle);
  139. craftPlayer.getHandle().playerConnection.sendPacket(packetTitle);
  140.  
  141. IChatBaseComponent chatSubtitle = ChatSerializer.a("{\"text\": \"" + subtitle + "\"}");
  142. PacketPlayOutTitle packetSubtitle = new PacketPlayOutTitle(EnumTitleAction.SUBTITLE, chatSubtitle);
  143. craftPlayer.getHandle().playerConnection.sendPacket(packetSubtitle);
  144. }
  145. public static void sendActionBar(Player player, String message) {
  146. ActionBarUtil actionBarMessageEvent = new ActionBarUtil(player, message);
  147. Bukkit.getPluginManager().callEvent(actionBarMessageEvent);
  148. if (actionBarMessageEvent.isCancelled())
  149. return;
  150.  
  151. try {
  152. Class<?> c1 = Class.forName("org.bukkit.craftbukkit." + nmsver + ".entity.CraftPlayer");
  153. Object p = c1.cast(player);
  154. Object ppoc;
  155. Class<?> c4 = Class.forName("net.minecraft.server." + nmsver + ".PacketPlayOutChat");
  156. Class<?> c5 = Class.forName("net.minecraft.server." + nmsver + ".Packet");
  157. Class<?> c2 = Class.forName("net.minecraft.server." + nmsver + ".ChatComponentText");
  158. Class<?> c3 = Class.forName("net.minecraft.server." + nmsver + ".IChatBaseComponent");
  159. Object o = c2.getConstructor(new Class<?>[] { String.class }).newInstance(message);
  160. ppoc = c4.getConstructor(new Class<?>[] { c3, byte.class }).newInstance(o, (byte) 2);
  161. Method m1 = c1.getDeclaredMethod("getHandle");
  162. Object h = m1.invoke(p);
  163. Field f1 = h.getClass().getDeclaredField("playerConnection");
  164. Object pc = f1.get(h);
  165. Method m5 = pc.getClass().getDeclaredMethod("sendPacket", c5);
  166. m5.invoke(pc, ppoc);
  167. } catch (Exception ex) {
  168. ex.printStackTrace();
  169. }
  170. }
  171.  
  172. public static void sendActionBar(final Player player, final String message, int duration) {
  173. sendActionBar(player, message);
  174.  
  175. if (duration >= 0) {
  176. new BukkitRunnable() {
  177. @Override
  178. public void run() {
  179. sendActionBar(player, "");
  180. }
  181. }.runTaskLater((Plugin) GuildPlugin.getPlugin(), duration + 1);
  182. }
  183.  
  184. while (duration > 60) {
  185. duration -= 60;
  186. int sched = duration % 60;
  187. new BukkitRunnable() {
  188. @Override
  189. public void run() {
  190. sendActionBar(player, message);
  191. }
  192. }.runTaskLater((Plugin) GuildPlugin.getPlugin(), (long) sched);
  193. }
  194. }
  195. public static void removeItems(final Player p, final ItemStack... items) {
  196. final Inventory i = (Inventory) p.getInventory();
  197. final HashMap<Integer, ItemStack> notStored = (HashMap<Integer, ItemStack>) i.removeItem(items);
  198. for (final Map.Entry<Integer, ItemStack> e : notStored.entrySet()) {
  199. }
  200. }
  201.  
  202. public static boolean sendMessage(final Collection<? extends CommandSender> collection, final String message) {
  203. for (final CommandSender cs : collection) {
  204. sendMessage(cs, message);
  205. }
  206. return true;
  207. }
  208.  
  209. public static boolean sendMessage(final Collection<? extends CommandSender> collection, final String message, final String permission) {
  210. for (final CommandSender cs : collection) {
  211. sendMessage(cs, message, permission);
  212. }
  213. return true;
  214. }
  215.  
  216. public static boolean containsIgnoreCase(final String[] array, final String element) {
  217. for (final String s : array) {
  218. if (s.equalsIgnoreCase(element)) {
  219. return true;
  220. }
  221. }
  222. return false;
  223. }
  224.  
  225. public static void copy(InputStream in, File file) {
  226. try {
  227. OutputStream out = new FileOutputStream(file);
  228. byte[] buf = new byte[1024];
  229. int len;
  230.  
  231. while ((len = in.read(buf)) > 0) {
  232. out.write(buf, 0, len);
  233. }
  234.  
  235. out.close();
  236. in.close();
  237. } catch (Exception e) {
  238. e.printStackTrace();
  239. }
  240. }
  241.  
  242. public static Material getMaterial(final String materialName) {
  243. Material returnMaterial = null;
  244. if (isInteger(materialName)) {
  245. final int id = Integer.parseInt(materialName);
  246. returnMaterial = Material.getMaterial(id);
  247. }
  248. else {
  249. returnMaterial = Material.matchMaterial(materialName);
  250. }
  251. return returnMaterial;
  252. }
  253.  
  254. public static void giveItems(final Player p, final ItemStack... items) {
  255. final Inventory i = (Inventory) p.getInventory();
  256. final HashMap<Integer, ItemStack> notStored = (HashMap<Integer, ItemStack>) i.addItem(items);
  257. for (final Map.Entry<Integer, ItemStack> e : notStored.entrySet()) {
  258. p.getWorld().dropItemNaturally(p.getLocation(), (ItemStack) e.getValue());
  259. }
  260. }
  261.  
  262. public static Player getDamager(final EntityDamageByEntityEvent e) {
  263. final Entity damager = e.getDamager();
  264. if (damager instanceof Player) {
  265. return (Player) damager;
  266. }
  267. if (damager instanceof Projectile) {
  268. final Projectile p = (Projectile) damager;
  269. if (p.getShooter() instanceof Player) {
  270. return (Player) p.getShooter();
  271. }
  272. }
  273. return null;
  274. }
  275.  
  276.  
  277. public static boolean isAlphaNumeric(final String s) {
  278. return s.matches("^[a-zA-Z0-9_]*$");
  279. }
  280.  
  281. public static boolean isFloat(final String string) {
  282. return Pattern.matches("([0-9]*)\\.([0-9]*)", string);
  283. }
  284.  
  285. public static boolean isInteger(final String string) {
  286. return Pattern.matches("-?[0-9]+", string.subSequence(0, string.length()));
  287. }
  288.  
  289. public static void sendHoverMessageCommand(final Player p, final String s1, final String s2, final String cmd) {
  290. final IChatBaseComponent msg = IChatBaseComponent.ChatSerializer.a(fixColor("{\"text\":\"" + s1 + "\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"" + s2 + "\"}]}},\"clickEvent\":{\"action\":\"suggest_command\",\"value\":\"" + cmd + "\"}}"));
  291. final PacketPlayOutChat hover = new PacketPlayOutChat(msg);
  292. ((CraftPlayer)p).getHandle().playerConnection.sendPacket((Packet<?>)hover);
  293. }
  294.  
  295. public static void sendHoverMessage(final CommandSender p, final String s1, final String s2) {
  296. final IChatBaseComponent msg = IChatBaseComponent.ChatSerializer.a(fixColor("{\"text\":\"" + s1 + "\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"" + s2 + "\"}]}},\"clickEvent\":{\"action\":\"suggest_command\",\"value\":\"\"}}"));
  297. final PacketPlayOutChat hover = new PacketPlayOutChat(msg);
  298. ((CraftPlayer)p).getHandle().playerConnection.sendPacket((Packet<?>)hover);
  299. }
  300. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement