Guest User

Untitled

a guest
Jan 22nd, 2024
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.72 KB | None | 0 0
  1.     private void openInventory(Player viewer, Inventory inventory) {
  2.         // Create a copy of the target player's inventory
  3.         int inventorySize = 45;
  4.         Inventory copiedInventory = Bukkit.createInventory(null, inventorySize, "Target Inventory");
  5.  
  6.         // Copy items from the target player's inventory to the copied inventory
  7.         copiedInventory.setContents(inventory.getContents());
  8.  
  9.         // Open the copied inventory to the viewer
  10.         viewer.openInventory(copiedInventory);
  11.     }
  12.  
  13.  
  14.     @EventHandler
  15.     public void onInventoryDrag(InventoryDragEvent event) {
  16.         Player viewer = (Player) event.getWhoClicked();
  17.         Inventory topInventory = event.getView().getTopInventory();
  18.  
  19.         if (topInventory.getHolder() instanceof Player) {
  20.             Player targetPlayer = (Player) topInventory.getHolder();
  21.  
  22.             // Prevent dragging items into the target player's inventory
  23.             if (event.getRawSlots().stream().anyMatch(rawSlot -> rawSlot >= topInventory.getSize())) {
  24.                 event.setCancelled(true);
  25.                 return;
  26.             }
  27.  
  28.             // Prevent dragging items from the target player's inventory
  29.             if (event.getRawSlots().stream().anyMatch(rawSlot -> rawSlot < topInventory.getSize())) {
  30.                 event.setCancelled(true);
  31.                 return;
  32.             }
  33.  
  34.             // Copy the dragged items from the event to the target player's inventory
  35.             for (int rawSlot : event.getRawSlots()) {
  36.                 ItemStack item = event.getCursor();
  37.                 if (item != null) {
  38.                     // Prevent dragging items into slots that don't exist in the target player's inventory
  39.                     if (rawSlot < targetPlayer.getInventory().getSize()) {
  40.                         targetPlayer.getInventory().setItem(rawSlot, item);
  41.                         event.getView().setCursor(null); // Clear the cursor to remove the item from the player's inventory
  42.                     }
  43.                 }
  44.             }
  45.  
  46.             // Update other player's inventory
  47.             updateOtherPlayerInventory(targetPlayer);
  48.         }
  49.     }
  50.  
  51.     private void updateOtherPlayerInventory(Player targetPlayer) {
  52.         // Loop through online players and update their inventory if they have the custom inventory open
  53.         for (Player onlinePlayer : Bukkit.getOnlinePlayers()) {
  54.             if (onlinePlayer != targetPlayer && onlinePlayer.getOpenInventory().getTitle().equals("Target Inventory")) {
  55.                 // Update the other player's inventory
  56.                 onlinePlayer.getOpenInventory().getTopInventory().setContents(targetPlayer.getOpenInventory().getTopInventory().getContents());
  57.             }
  58.         }
  59.     }
Add Comment
Please, Sign In to add comment