Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private void openInventory(Player viewer, Inventory inventory) {
- // Create a copy of the target player's inventory
- int inventorySize = 45;
- Inventory copiedInventory = Bukkit.createInventory(null, inventorySize, "Target Inventory");
- // Copy items from the target player's inventory to the copied inventory
- copiedInventory.setContents(inventory.getContents());
- // Open the copied inventory to the viewer
- viewer.openInventory(copiedInventory);
- }
- @EventHandler
- public void onInventoryDrag(InventoryDragEvent event) {
- Player viewer = (Player) event.getWhoClicked();
- Inventory topInventory = event.getView().getTopInventory();
- if (topInventory.getHolder() instanceof Player) {
- Player targetPlayer = (Player) topInventory.getHolder();
- // Prevent dragging items into the target player's inventory
- if (event.getRawSlots().stream().anyMatch(rawSlot -> rawSlot >= topInventory.getSize())) {
- event.setCancelled(true);
- return;
- }
- // Prevent dragging items from the target player's inventory
- if (event.getRawSlots().stream().anyMatch(rawSlot -> rawSlot < topInventory.getSize())) {
- event.setCancelled(true);
- return;
- }
- // Copy the dragged items from the event to the target player's inventory
- for (int rawSlot : event.getRawSlots()) {
- ItemStack item = event.getCursor();
- if (item != null) {
- // Prevent dragging items into slots that don't exist in the target player's inventory
- if (rawSlot < targetPlayer.getInventory().getSize()) {
- targetPlayer.getInventory().setItem(rawSlot, item);
- event.getView().setCursor(null); // Clear the cursor to remove the item from the player's inventory
- }
- }
- }
- // Update other player's inventory
- updateOtherPlayerInventory(targetPlayer);
- }
- }
- private void updateOtherPlayerInventory(Player targetPlayer) {
- // Loop through online players and update their inventory if they have the custom inventory open
- for (Player onlinePlayer : Bukkit.getOnlinePlayers()) {
- if (onlinePlayer != targetPlayer && onlinePlayer.getOpenInventory().getTitle().equals("Target Inventory")) {
- // Update the other player's inventory
- onlinePlayer.getOpenInventory().getTopInventory().setContents(targetPlayer.getOpenInventory().getTopInventory().getContents());
- }
- }
- }
Add Comment
Please, Sign In to add comment