Fix item delete in own inventory
Dragging items across top and bottom inventories with own inventory open resulted in the overlapping content being deleted.
This commit is contained in:
		@@ -54,6 +54,18 @@ public interface IPlayerDataManager {
 | 
			
		||||
    @Nullable
 | 
			
		||||
    InventoryView openInventory(@NotNull Player player, @NotNull ISpecialInventory inventory);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Convert a raw slot number into a player inventory slot number.
 | 
			
		||||
     *
 | 
			
		||||
     * <p>Note that this method is specifically for converting an ISpecialPlayerInventory slot number into a regular
 | 
			
		||||
     * player inventory slot number.
 | 
			
		||||
     *
 | 
			
		||||
     * @param view the open inventory view
 | 
			
		||||
     * @param rawSlot the raw slot in the view
 | 
			
		||||
     * @return the converted slot number
 | 
			
		||||
     */
 | 
			
		||||
    int convertToPlayerSlot(InventoryView view, int rawSlot);
 | 
			
		||||
 | 
			
		||||
    void sendSystemMessage(@NotNull Player player, @NotNull String message);
 | 
			
		||||
 | 
			
		||||
    @NotNull
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,83 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) 2011-2021 lishid. All rights reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * This program is free software: you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms of the GNU General Public License as published by
 | 
			
		||||
 * the Free Software Foundation, version 3.
 | 
			
		||||
 *
 | 
			
		||||
 * This program is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
package com.lishid.openinv.internal;
 | 
			
		||||
 | 
			
		||||
import com.lishid.openinv.OpenInv;
 | 
			
		||||
import org.bukkit.entity.HumanEntity;
 | 
			
		||||
import org.bukkit.entity.Player;
 | 
			
		||||
import org.bukkit.event.inventory.InventoryType;
 | 
			
		||||
import org.bukkit.inventory.Inventory;
 | 
			
		||||
import org.bukkit.inventory.InventoryView;
 | 
			
		||||
import org.jetbrains.annotations.NotNull;
 | 
			
		||||
 | 
			
		||||
public class OpenInventoryView extends InventoryView {
 | 
			
		||||
 | 
			
		||||
    private final Player player;
 | 
			
		||||
    private final ISpecialInventory inventory;
 | 
			
		||||
    private final String titleKey;
 | 
			
		||||
    private final String titleDefaultSuffix;
 | 
			
		||||
    private String title;
 | 
			
		||||
 | 
			
		||||
    public OpenInventoryView(Player player, ISpecialInventory inventory, String titleKey, String titleDefaultSuffix) {
 | 
			
		||||
        this.player = player;
 | 
			
		||||
        this.inventory = inventory;
 | 
			
		||||
        this.titleKey = titleKey;
 | 
			
		||||
        this.titleDefaultSuffix = titleDefaultSuffix;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public @NotNull Inventory getTopInventory() {
 | 
			
		||||
        return inventory.getBukkitInventory();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public @NotNull Inventory getBottomInventory() {
 | 
			
		||||
        return getPlayer().getInventory();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public @NotNull HumanEntity getPlayer() {
 | 
			
		||||
        return player;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public @NotNull InventoryType getType() {
 | 
			
		||||
        return inventory.getBukkitInventory().getType();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public @NotNull String getTitle() {
 | 
			
		||||
        if (title == null) {
 | 
			
		||||
            HumanEntity owner = getPlayer();
 | 
			
		||||
 | 
			
		||||
            String localTitle = OpenInv.getPlugin(OpenInv.class)
 | 
			
		||||
                    .getLocalizedMessage(
 | 
			
		||||
                            owner,
 | 
			
		||||
                            titleKey,
 | 
			
		||||
                            "%player%",
 | 
			
		||||
                            owner.getName());
 | 
			
		||||
            if (localTitle != null) {
 | 
			
		||||
                title = localTitle;
 | 
			
		||||
            } else  {
 | 
			
		||||
                title = owner.getName() + titleDefaultSuffix;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return title;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user