danik159

Untitled

Mar 30th, 2020
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.30 KB | None | 0 0
  1. package com.chickenstyle.fullInventory;
  2.  
  3. import java.lang.reflect.Constructor;
  4. import java.util.HashMap;
  5.  
  6. import org.bukkit.Bukkit;
  7. import org.bukkit.ChatColor;
  8. import org.bukkit.Sound;
  9. import org.bukkit.entity.Player;
  10. import org.bukkit.event.EventHandler;
  11. import org.bukkit.event.Listener;
  12. import org.bukkit.event.player.PlayerPickupItemEvent;
  13. import org.bukkit.inventory.Inventory;
  14. import org.bukkit.inventory.ItemStack;
  15. import org.bukkit.plugin.java.JavaPlugin;
  16. import org.bukkit.scheduler.BukkitRunnable;
  17.  
  18.  
  19. public class Main extends JavaPlugin implements Listener{
  20.  
  21. HashMap<Player,String> noticed = new HashMap<Player,String>();
  22. @Override
  23. public void onEnable() {
  24. getServer().getConsoleSender().sendMessage(ChatColor.GREEN + "Inventory Checker Is Enabled");
  25. Bukkit.getPluginManager().registerEvents(this, this);
  26. getCommand("inventory").setExecutor(new InventoryCommand());
  27. this.getConfig().options().copyDefaults();
  28. saveDefaultConfig();
  29. }
  30.  
  31.  
  32.  
  33. public boolean hasAvaliableSlot(Player player,ItemStack itemdrop){
  34. Inventory inv = (Inventory) player.getInventory();
  35. inv.addItem(itemdrop);
  36. for (ItemStack item: inv.getContents()) {
  37. if(item == null) {
  38. inv.removeItem(itemdrop);
  39. return true;
  40. }
  41. }
  42. inv.removeItem(itemdrop);
  43. return false;
  44. }
  45.  
  46.  
  47.  
  48. @EventHandler
  49. public void pickUpItem(PlayerPickupItemEvent e) {
  50. Player player = e.getPlayer();
  51. String text = getConfig().getString("message");
  52. String sound = getConfig().getString("sound").toUpperCase();
  53. int duration = getConfig().getInt("messageDuration") * 20;
  54. int delay = getConfig().getInt("delaytime") * 20;
  55. // Checks if inventory is full
  56.  
  57. boolean isEmpty = hasAvaliableSlot(player, e.getItem().getItemStack());
  58.  
  59. if (!isEmpty) {
  60. if (!noticed.containsKey(player)) {
  61. switch (getConfig().getString("typeofmessage").toLowerCase()) {
  62. case "text":
  63. player.sendMessage(ChatColor.translateAlternateColorCodes('&', text));
  64. noticed.put(player, "1");
  65. player.playSound(player.getLocation(), Sound.valueOf(sound), 1f, 1f);
  66. break;
  67.  
  68. case "title":
  69. try {
  70. Object enumTitle = getNMSClass("PacketPlayOutTitle").getDeclaredClasses()[0].getField("TITLE").get(null);
  71. Object chat = getNMSClass("IChatBaseComponent").getDeclaredClasses()[0].getMethod("a", String.class).invoke(null, "{\"text\": \"" + text + "\",color:" + ChatColor.RED.name().toLowerCase() + "}");
  72.  
  73. Constructor<?> titleConstuctor = getNMSClass("PacketPlayOutTitle").getConstructor(getNMSClass("PacketPlayOutTitle").getDeclaredClasses()[0], getNMSClass("IChatBaseComponent"), int.class, int.class, int.class);
  74. Object packet = titleConstuctor.newInstance(enumTitle,chat, 10, duration, 10);
  75. sendPacket(player,packet);
  76. } catch (Exception e1) {
  77. e1.printStackTrace();
  78. }
  79. noticed.put(player, "1");
  80. player.playSound(player.getLocation(), Sound.valueOf(sound), 1f, 1f);
  81. break;
  82.  
  83. default:
  84. getServer().getConsoleSender().sendMessage(ChatColor.RED + "Invalid Type Of Message.");
  85. break;
  86. }
  87. new BukkitRunnable() {
  88. private int i = 0;
  89. @Override
  90. public void run() {
  91. if(i == 1) {
  92. cancel();
  93. }
  94. ++i;
  95. noticed.remove(player, "1");
  96. }
  97. }.runTaskTimer(this, delay, 20L);
  98. }
  99.  
  100. }
  101. }
  102.  
  103. public void sendPacket(Player player, Object packet) {
  104. try {
  105. Object handle = player.getClass().getMethod("getHandle").invoke(player);
  106. Object playerConnection = handle.getClass().getField("playerConnection").get(handle);
  107. playerConnection.getClass().getMethod("sendPacket",getNMSClass("Packet")).invoke(playerConnection, packet);
  108.  
  109. } catch (Exception e) {
  110. e.printStackTrace();
  111. }
  112.  
  113. }
  114.  
  115. public Class<?> getNMSClass(String name) {
  116. String version = Bukkit.getServer().getClass().getPackage().getName().split("\\.")[3];
  117. try {
  118. return Class.forName("net.minecraft.server." + version + "." + name);
  119. } catch (ClassNotFoundException e) {
  120. e.printStackTrace();
  121. return null;
  122. }
  123.  
  124. }
  125.  
  126.  
  127. }
Advertisement
Add Comment
Please, Sign In to add comment