Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package me.dasneueupdate;
- import java.util.ArrayList;
- import java.util.HashMap;
- import com.nimbusds.jose.util.Container;
- import com.nukkitx.fakeinventories.FakeInventoriesCommand;
- import com.nukkitx.fakeinventories.FakeInventoriesPlugin;
- import com.nukkitx.fakeinventories.inventory.FakeInventories;
- import com.nukkitx.fakeinventories.inventory.FakeInventory;
- import cn.nukkit.Player;
- import cn.nukkit.command.Command;
- import cn.nukkit.command.CommandMap;
- import cn.nukkit.command.CommandSender;
- import cn.nukkit.command.data.CommandParamType;
- import cn.nukkit.command.data.CommandParameter;
- import cn.nukkit.event.EventHandler;
- import cn.nukkit.event.Listener;
- import cn.nukkit.event.inventory.InventoryCloseEvent;
- import cn.nukkit.event.inventory.InventoryMoveItemEvent;
- import cn.nukkit.event.player.PlayerCommandPreprocessEvent;
- import cn.nukkit.event.player.PlayerFormRespondedEvent;
- import cn.nukkit.event.player.PlayerMoveEvent;
- import cn.nukkit.event.server.DataPacketReceiveEvent;
- import cn.nukkit.event.server.DataPacketSendEvent;
- import cn.nukkit.form.element.ElementButton;
- import cn.nukkit.form.window.FormWindowSimple;
- import cn.nukkit.inventory.ChestInventory;
- import cn.nukkit.inventory.Inventory;
- import cn.nukkit.inventory.InventoryHolder;
- import cn.nukkit.item.Item;
- import cn.nukkit.item.enchantment.Enchantment;
- import cn.nukkit.level.Level;
- import cn.nukkit.math.Vector3;
- import cn.nukkit.network.protocol.BlockEventPacket;
- import cn.nukkit.network.protocol.ContainerClosePacket;
- import cn.nukkit.network.protocol.ContainerOpenPacket;
- import cn.nukkit.network.protocol.InventoryContentPacket;
- import cn.nukkit.plugin.PluginBase;
- import me.dasneueupdate.commands.BCommand;
- public class Main extends PluginBase implements Listener {
- public HashMap<Player, OpenInvs> openinvs = new HashMap<Player, OpenInvs>();
- public HashMap<Inventory, OpenInvs> openinvs1 = new HashMap<Inventory, OpenInvs>();
- @Override
- public void onEnable() {
- this.getServer().getPluginManager().registerEvents(this, this);
- CommandMap map = getServer().getCommandMap();
- Command invsee1 = new BCommand("invsee");
- Command invedit = new BCommand("invedit");
- CommandParameter[] array = {new CommandParameter("playername", CommandParamType.STRING, false)};
- invsee1.addCommandParameters("default", array);
- invedit.addCommandParameters("default", array);
- map.register("Invsee", invsee1);
- map.register("Invsee", invedit);
- }
- @EventHandler
- public void onMove(PlayerMoveEvent event) {
- if (openinvs.containsKey(event.getPlayer())) {
- openinvs.remove(event.getPlayer());
- openinvs1.remove(event.getPlayer().getInventory());
- sendContents(event.getPlayer(), event.getPlayer());
- event.getPlayer().sendAllInventories();
- }
- }
- // @EventHandler
- // public void onCloseInventory(InventoryCloseEvent event) {
- // openinvs.remove(event.getPlayer());
- // sendContents(event.getPlayer(), event.getPlayer());
- // event.getPlayer().sendAllInventories();
- // }
- @EventHandler
- public void onPacketRecived(DataPacketSendEvent event) {
- if (event.getPacket() instanceof InventoryContentPacket && openinvs.containsKey(event.getPlayer())) {
- event.setCancelled(true);
- }
- }
- @EventHandler
- public void onFormResponse(PlayerFormRespondedEvent e) {
- Player p = e.getPlayer();
- if(e.getWindow() instanceof FormWindowSimple) {
- FormWindowSimple gui = (FormWindowSimple)e.getWindow();
- String responseName = gui.getResponse().getClickedButton().getText();
- Player player = getServer().getPlayer(gui.getTitle());
- if (responseName.equals("Delete") || responseName.equals("Copy into my inventory")) {
- int slot = Integer.parseInt(gui.getContent().replaceFirst("Slot: ", "").split(" ")[0]) - 1;
- Item item = player.getInventory().getItem(slot);
- Item nitem = new Item(0);
- nitem.setCount(0);
- if (responseName.equals("Delete")) {
- player.getInventory().setItem(slot, nitem);
- }
- if (responseName.equals("Copy into my inventory")) {
- if (p.getInventory().canAddItem(item)) {
- p.getInventory().addItem(item);
- p.sendMessage("§aDas Item wurde zu deinem Inventar hinzugefügt!");
- }else {
- p.sendMessage("§cDas Item konnte nicht zu deinem Inventar hinzugefügt werden da dein Inventar voll ist!");
- }
- }
- }else {
- Player player1 = getServer().getPlayer(gui.getTitle());
- String slot = responseName.replaceFirst("Slot ", "").split(" ")[0];
- Item item = player.getInventory().getItem(Integer.parseInt(slot) - 1);
- FormWindowSimple gui1 = new FormWindowSimple(player1.getName(), "Slot " + slot);
- String enchantments = "";
- int i = 0;
- for (Enchantment enc:item.getEnchantments()) {
- i++;
- if (i > 1) {
- enchantments += ",";
- }
- enchantments += enc.getName() + " " + enc.getLevel();
- }
- String lore = "Lore: ";
- i = 0;
- for (String s:item.getLore()) {
- i++;
- if (i > 1) {
- s += "\n";
- }
- lore += s;
- }
- if (lore.length() < 6) lore = "";
- gui1.setContent("Slot: " + slot + " \nName: " + item.getName() + "\n" + "Count: " + item.getCount() + "\n" + "§5Enchantments: " + enchantments + "\n§r" + lore + "\n");
- gui1.addButton(new ElementButton("Delete"));
- gui1.addButton(new ElementButton("Copy into my inventory"));
- p.showFormWindow(gui1);
- }
- }
- }
- @EventHandler
- public void onCommand(PlayerCommandPreprocessEvent event) {
- String[] array = event.getMessage().split(" ");
- if (event.getMessage().toLowerCase().startsWith("/invedit ")) {
- if (event.getPlayer().hasPermission("inv.edit")) {
- Player p = getServer().getPlayer(array[1]);
- if (p == null) {
- event.getPlayer().sendMessage("§cDer angegebende Spieler wurde nicht gefunden!");
- event.setCancelled();
- return;
- }
- FormWindowSimple gui = new FormWindowSimple(p.getName(), "You see the Inventory of " + p.getName());
- for(int i = 0; i < p.getInventory().getSize();i++) {
- Item item = p.getInventory().getItem(i);
- if (item.getCount() <= 0) continue;
- String s = "";
- s = "Slot " + String.valueOf(i + 1) + " " + item.getCount() + "x" + " " + item.getName();
- gui.addButton(new ElementButton(s));
- }
- event.getPlayer().showFormWindow(gui);
- event.getPlayer().sendMessage("§aDu siehst das Inventar von " + p.getName());
- }else {
- event.getPlayer().sendMessage("§cDu hast nicht die benötigten Berechtigungen!");
- }
- event.setCancelled();
- }else if (event.getMessage().toLowerCase().startsWith("/invsee ")) {
- if (event.getPlayer().hasPermission("inv.see")) {
- Player p = getServer().getPlayer(array[1]);
- if (p == null) {
- event.getPlayer().sendMessage("§cDer angegebende Spieler wurde nicht gefunden!");
- event.setCancelled();
- return;
- }
- p.getInventory().open(event.getPlayer());
- ContainerOpenPacket pk = new ContainerOpenPacket();
- pk.windowId = p.getWindowId(p.getInventory());
- pk.type = p.getInventory().getType().getNetworkType();
- InventoryHolder holder = p.getPlayer().getInventory().getHolder();
- if(holder instanceof Vector3) {
- pk.x = (int)((Vector3)holder).getX();
- pk.y = (int)((Vector3)holder).getY();
- pk.z = (int)((Vector3)holder).getZ();
- } else {
- pk.x = pk.y = pk.z = 0;
- }
- event.getPlayer().dataPacket(pk);
- sendContents(event.getPlayer(), p);
- openinvs.put(event.getPlayer(), new OpenInvs(event.getPlayer(), p));
- openinvs1.put(event.getPlayer().getInventory(), new OpenInvs(event.getPlayer(), p));
- event.getPlayer().sendMessage("§aDu siehst das Inventar von " + p.getName());
- }else {
- event.getPlayer().sendMessage("§cDu hast nicht die benötigten Berechtigungen!");
- }
- event.setCancelled();
- }else if (event.getMessage().toLowerCase().startsWith("/invsee") || event.getMessage().toLowerCase().startsWith("/invedit")) {
- event.getPlayer().sendMessage("§cDu hast vergessen einen Spieler anzugeben!");
- event.setCancelled();
- }
- }
- public void sendContents(Player player,Player player2) {
- InventoryContentPacket pk = new InventoryContentPacket();
- pk.slots = new Item[player2.getInventory().getSize()];
- for(int i = 0; i < player2.getInventory().getSize(); ++i) {
- pk.slots[i] = player2.getInventory().getItem(i);
- }
- int id = player2.getWindowId(player2.getInventory());
- if(id != -1 && player2.spawned) {
- pk.inventoryId = id;
- player.dataPacket(pk);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment