dnuhax

Untitled

Jun 7th, 2019
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.39 KB | None | 0 0
  1. package me.dasneueupdate;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.HashMap;
  5.  
  6. import com.nimbusds.jose.util.Container;
  7. import com.nukkitx.fakeinventories.FakeInventoriesCommand;
  8. import com.nukkitx.fakeinventories.FakeInventoriesPlugin;
  9. import com.nukkitx.fakeinventories.inventory.FakeInventories;
  10. import com.nukkitx.fakeinventories.inventory.FakeInventory;
  11.  
  12. import cn.nukkit.Player;
  13. import cn.nukkit.command.Command;
  14. import cn.nukkit.command.CommandMap;
  15. import cn.nukkit.command.CommandSender;
  16. import cn.nukkit.command.data.CommandParamType;
  17. import cn.nukkit.command.data.CommandParameter;
  18. import cn.nukkit.event.EventHandler;
  19. import cn.nukkit.event.Listener;
  20. import cn.nukkit.event.inventory.InventoryCloseEvent;
  21. import cn.nukkit.event.inventory.InventoryMoveItemEvent;
  22. import cn.nukkit.event.player.PlayerCommandPreprocessEvent;
  23. import cn.nukkit.event.player.PlayerFormRespondedEvent;
  24. import cn.nukkit.event.player.PlayerMoveEvent;
  25. import cn.nukkit.event.server.DataPacketReceiveEvent;
  26. import cn.nukkit.event.server.DataPacketSendEvent;
  27. import cn.nukkit.form.element.ElementButton;
  28. import cn.nukkit.form.window.FormWindowSimple;
  29. import cn.nukkit.inventory.ChestInventory;
  30. import cn.nukkit.inventory.Inventory;
  31. import cn.nukkit.inventory.InventoryHolder;
  32. import cn.nukkit.item.Item;
  33. import cn.nukkit.item.enchantment.Enchantment;
  34. import cn.nukkit.level.Level;
  35. import cn.nukkit.math.Vector3;
  36. import cn.nukkit.network.protocol.BlockEventPacket;
  37. import cn.nukkit.network.protocol.ContainerClosePacket;
  38. import cn.nukkit.network.protocol.ContainerOpenPacket;
  39. import cn.nukkit.network.protocol.InventoryContentPacket;
  40. import cn.nukkit.plugin.PluginBase;
  41. import me.dasneueupdate.commands.BCommand;
  42.  
  43. public class Main extends PluginBase implements Listener {
  44. public HashMap<Player, OpenInvs> openinvs = new HashMap<Player, OpenInvs>();
  45. public HashMap<Inventory, OpenInvs> openinvs1 = new HashMap<Inventory, OpenInvs>();
  46. @Override
  47. public void onEnable() {
  48. this.getServer().getPluginManager().registerEvents(this, this);
  49. CommandMap map = getServer().getCommandMap();
  50. Command invsee1 = new BCommand("invsee");
  51. Command invedit = new BCommand("invedit");
  52. CommandParameter[] array = {new CommandParameter("playername", CommandParamType.STRING, false)};
  53. invsee1.addCommandParameters("default", array);
  54. invedit.addCommandParameters("default", array);
  55. map.register("Invsee", invsee1);
  56. map.register("Invsee", invedit);
  57. }
  58. @EventHandler
  59. public void onMove(PlayerMoveEvent event) {
  60. if (openinvs.containsKey(event.getPlayer())) {
  61. openinvs.remove(event.getPlayer());
  62. openinvs1.remove(event.getPlayer().getInventory());
  63. sendContents(event.getPlayer(), event.getPlayer());
  64. event.getPlayer().sendAllInventories();
  65. }
  66. }
  67. // @EventHandler
  68. // public void onCloseInventory(InventoryCloseEvent event) {
  69. // openinvs.remove(event.getPlayer());
  70. // sendContents(event.getPlayer(), event.getPlayer());
  71. // event.getPlayer().sendAllInventories();
  72. // }
  73. @EventHandler
  74. public void onPacketRecived(DataPacketSendEvent event) {
  75. if (event.getPacket() instanceof InventoryContentPacket && openinvs.containsKey(event.getPlayer())) {
  76. event.setCancelled(true);
  77. }
  78. }
  79.  
  80. @EventHandler
  81. public void onFormResponse(PlayerFormRespondedEvent e) {
  82. Player p = e.getPlayer();
  83. if(e.getWindow() instanceof FormWindowSimple) {
  84. FormWindowSimple gui = (FormWindowSimple)e.getWindow();
  85. String responseName = gui.getResponse().getClickedButton().getText();
  86. Player player = getServer().getPlayer(gui.getTitle());
  87. if (responseName.equals("Delete") || responseName.equals("Copy into my inventory")) {
  88. int slot = Integer.parseInt(gui.getContent().replaceFirst("Slot: ", "").split(" ")[0]) - 1;
  89. Item item = player.getInventory().getItem(slot);
  90. Item nitem = new Item(0);
  91. nitem.setCount(0);
  92. if (responseName.equals("Delete")) {
  93. player.getInventory().setItem(slot, nitem);
  94. }
  95. if (responseName.equals("Copy into my inventory")) {
  96. if (p.getInventory().canAddItem(item)) {
  97. p.getInventory().addItem(item);
  98. p.sendMessage("§aDas Item wurde zu deinem Inventar hinzugefügt!");
  99. }else {
  100. p.sendMessage("§cDas Item konnte nicht zu deinem Inventar hinzugefügt werden da dein Inventar voll ist!");
  101. }
  102. }
  103. }else {
  104. Player player1 = getServer().getPlayer(gui.getTitle());
  105. String slot = responseName.replaceFirst("Slot ", "").split(" ")[0];
  106. Item item = player.getInventory().getItem(Integer.parseInt(slot) - 1);
  107. FormWindowSimple gui1 = new FormWindowSimple(player1.getName(), "Slot " + slot);
  108. String enchantments = "";
  109. int i = 0;
  110. for (Enchantment enc:item.getEnchantments()) {
  111. i++;
  112. if (i > 1) {
  113. enchantments += ",";
  114. }
  115. enchantments += enc.getName() + " " + enc.getLevel();
  116. }
  117. String lore = "Lore: ";
  118. i = 0;
  119. for (String s:item.getLore()) {
  120. i++;
  121. if (i > 1) {
  122. s += "\n";
  123. }
  124. lore += s;
  125. }
  126. if (lore.length() < 6) lore = "";
  127. gui1.setContent("Slot: " + slot + " \nName: " + item.getName() + "\n" + "Count: " + item.getCount() + "\n" + "§5Enchantments: " + enchantments + "\n§r" + lore + "\n");
  128. gui1.addButton(new ElementButton("Delete"));
  129. gui1.addButton(new ElementButton("Copy into my inventory"));
  130. p.showFormWindow(gui1);
  131. }
  132. }
  133. }
  134. @EventHandler
  135. public void onCommand(PlayerCommandPreprocessEvent event) {
  136. String[] array = event.getMessage().split(" ");
  137. if (event.getMessage().toLowerCase().startsWith("/invedit ")) {
  138. if (event.getPlayer().hasPermission("inv.edit")) {
  139. Player p = getServer().getPlayer(array[1]);
  140. if (p == null) {
  141. event.getPlayer().sendMessage("§cDer angegebende Spieler wurde nicht gefunden!");
  142. event.setCancelled();
  143. return;
  144. }
  145. FormWindowSimple gui = new FormWindowSimple(p.getName(), "You see the Inventory of " + p.getName());
  146. for(int i = 0; i < p.getInventory().getSize();i++) {
  147. Item item = p.getInventory().getItem(i);
  148. if (item.getCount() <= 0) continue;
  149. String s = "";
  150. s = "Slot " + String.valueOf(i + 1) + " " + item.getCount() + "x" + " " + item.getName();
  151. gui.addButton(new ElementButton(s));
  152. }
  153. event.getPlayer().showFormWindow(gui);
  154. event.getPlayer().sendMessage("§aDu siehst das Inventar von " + p.getName());
  155. }else {
  156. event.getPlayer().sendMessage("§cDu hast nicht die benötigten Berechtigungen!");
  157. }
  158. event.setCancelled();
  159. }else if (event.getMessage().toLowerCase().startsWith("/invsee ")) {
  160. if (event.getPlayer().hasPermission("inv.see")) {
  161. Player p = getServer().getPlayer(array[1]);
  162. if (p == null) {
  163. event.getPlayer().sendMessage("§cDer angegebende Spieler wurde nicht gefunden!");
  164. event.setCancelled();
  165. return;
  166. }
  167. p.getInventory().open(event.getPlayer());
  168. ContainerOpenPacket pk = new ContainerOpenPacket();
  169. pk.windowId = p.getWindowId(p.getInventory());
  170. pk.type = p.getInventory().getType().getNetworkType();
  171. InventoryHolder holder = p.getPlayer().getInventory().getHolder();
  172. if(holder instanceof Vector3) {
  173. pk.x = (int)((Vector3)holder).getX();
  174. pk.y = (int)((Vector3)holder).getY();
  175. pk.z = (int)((Vector3)holder).getZ();
  176. } else {
  177. pk.x = pk.y = pk.z = 0;
  178. }
  179. event.getPlayer().dataPacket(pk);
  180. sendContents(event.getPlayer(), p);
  181. openinvs.put(event.getPlayer(), new OpenInvs(event.getPlayer(), p));
  182. openinvs1.put(event.getPlayer().getInventory(), new OpenInvs(event.getPlayer(), p));
  183. event.getPlayer().sendMessage("§aDu siehst das Inventar von " + p.getName());
  184. }else {
  185. event.getPlayer().sendMessage("§cDu hast nicht die benötigten Berechtigungen!");
  186. }
  187. event.setCancelled();
  188. }else if (event.getMessage().toLowerCase().startsWith("/invsee") || event.getMessage().toLowerCase().startsWith("/invedit")) {
  189. event.getPlayer().sendMessage("§cDu hast vergessen einen Spieler anzugeben!");
  190. event.setCancelled();
  191. }
  192. }
  193. public void sendContents(Player player,Player player2) {
  194. InventoryContentPacket pk = new InventoryContentPacket();
  195. pk.slots = new Item[player2.getInventory().getSize()];
  196.  
  197. for(int i = 0; i < player2.getInventory().getSize(); ++i) {
  198. pk.slots[i] = player2.getInventory().getItem(i);
  199. }
  200. int id = player2.getWindowId(player2.getInventory());
  201. if(id != -1 && player2.spawned) {
  202. pk.inventoryId = id;
  203. player.dataPacket(pk);
  204. }
  205. }
  206. }
Advertisement
Add Comment
Please, Sign In to add comment