Reintroduce full OpenInv #20
@@ -17,6 +17,7 @@
 | 
			
		||||
package com.lishid.openinv.commands;
 | 
			
		||||
 | 
			
		||||
import java.util.HashMap;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.UUID;
 | 
			
		||||
 | 
			
		||||
import org.bukkit.Bukkit;
 | 
			
		||||
@@ -41,7 +42,8 @@ public class OpenEnderPluginCommand implements CommandExecutor {
 | 
			
		||||
        this.plugin = plugin;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
 | 
			
		||||
    @Override
 | 
			
		||||
	public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
 | 
			
		||||
        if (!(sender instanceof Player)) {
 | 
			
		||||
            sender.sendMessage(ChatColor.RED + "You can't use this from the console.");
 | 
			
		||||
            return true;
 | 
			
		||||
@@ -82,6 +84,11 @@ public class OpenEnderPluginCommand implements CommandExecutor {
 | 
			
		||||
        new BukkitRunnable() {
 | 
			
		||||
            @Override
 | 
			
		||||
            public void run() {
 | 
			
		||||
                List<Player> matches = Bukkit.matchPlayer(name);
 | 
			
		||||
                if (!matches.isEmpty()) {
 | 
			
		||||
                    openInventory(player, matches.get(0).getUniqueId());
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
                final OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(name);
 | 
			
		||||
                if (Bukkit.getPlayer(senderID) == null) {
 | 
			
		||||
                    return;
 | 
			
		||||
 
 | 
			
		||||
@@ -17,6 +17,7 @@
 | 
			
		||||
package com.lishid.openinv.commands;
 | 
			
		||||
 | 
			
		||||
import java.util.HashMap;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.UUID;
 | 
			
		||||
 | 
			
		||||
import org.bukkit.Bukkit;
 | 
			
		||||
@@ -41,7 +42,8 @@ public class OpenInvPluginCommand implements CommandExecutor {
 | 
			
		||||
        this.plugin = plugin;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
 | 
			
		||||
    @Override
 | 
			
		||||
	public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
 | 
			
		||||
        if (!(sender instanceof Player)) {
 | 
			
		||||
            sender.sendMessage(ChatColor.RED + "You can't use this from the console.");
 | 
			
		||||
            return true;
 | 
			
		||||
@@ -76,11 +78,15 @@ public class OpenInvPluginCommand implements CommandExecutor {
 | 
			
		||||
            name = args[0];
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        sender.sendMessage(ChatColor.GREEN + "Starting inventory lookup.");
 | 
			
		||||
        final UUID senderID = player.getUniqueId();
 | 
			
		||||
        new BukkitRunnable() {
 | 
			
		||||
            @Override
 | 
			
		||||
            public void run() {
 | 
			
		||||
                List<Player> matches = Bukkit.matchPlayer(name);
 | 
			
		||||
                if (!matches.isEmpty()) {
 | 
			
		||||
                    openInventory(player, matches.get(0).getUniqueId());
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
                final OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(name);
 | 
			
		||||
                if (Bukkit.getPlayer(senderID) == null) {
 | 
			
		||||
                    return;
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
package com.lishid.openinv.internal.v1_8_R1;
 | 
			
		||||
package com.lishid.openinv.internal.v1_8_R2;
 | 
			
		||||
 | 
			
		||||
import org.bukkit.ChatColor;
 | 
			
		||||
import org.bukkit.entity.Player;
 | 
			
		||||
@@ -22,18 +22,22 @@ import org.bukkit.entity.Player;
 | 
			
		||||
import com.lishid.openinv.OpenInv;
 | 
			
		||||
import com.lishid.openinv.internal.IAnySilentChest;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//Volatile
 | 
			
		||||
import net.minecraft.server.v1_8_R1.*;
 | 
			
		||||
import org.bukkit.craftbukkit.v1_8_R2.entity.CraftPlayer;
 | 
			
		||||
 | 
			
		||||
import org.bukkit.craftbukkit.v1_8_R1.entity.*;
 | 
			
		||||
import net.minecraft.server.v1_8_R2.Block;
 | 
			
		||||
import net.minecraft.server.v1_8_R2.BlockPosition;
 | 
			
		||||
import net.minecraft.server.v1_8_R2.EntityPlayer;
 | 
			
		||||
import net.minecraft.server.v1_8_R2.IInventory;
 | 
			
		||||
import net.minecraft.server.v1_8_R2.ITileInventory;
 | 
			
		||||
import net.minecraft.server.v1_8_R2.InventoryLargeChest;
 | 
			
		||||
import net.minecraft.server.v1_8_R2.PacketPlayOutOpenWindow;
 | 
			
		||||
import net.minecraft.server.v1_8_R2.TileEntityChest;
 | 
			
		||||
import net.minecraft.server.v1_8_R2.World;
 | 
			
		||||
 | 
			
		||||
public class AnySilentChest implements IAnySilentChest {
 | 
			
		||||
    public boolean IsAnyChestNeeded(Player p, int x, int y, int z) {
 | 
			
		||||
    @Override
 | 
			
		||||
	public boolean IsAnyChestNeeded(Player p, int x, int y, int z) {
 | 
			
		||||
        // FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest
 | 
			
		||||
        EntityPlayer player = ((CraftPlayer) p).getHandle();
 | 
			
		||||
        World world = player.world;
 | 
			
		||||
@@ -56,10 +60,11 @@ public class AnySilentChest implements IAnySilentChest {
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean ActivateChest(Player p, boolean anychest, boolean silentchest, int x, int y, int z) {
 | 
			
		||||
    @Override
 | 
			
		||||
	public boolean ActivateChest(Player p, boolean anychest, boolean silentchest, int x, int y, int z) {
 | 
			
		||||
        EntityPlayer player = ((CraftPlayer) p).getHandle();
 | 
			
		||||
        World world = player.world;
 | 
			
		||||
        Object chest = (TileEntityChest) world.getTileEntity(new BlockPosition(x, y, z));
 | 
			
		||||
        Object chest = world.getTileEntity(new BlockPosition(x, y, z));
 | 
			
		||||
        if (chest == null)
 | 
			
		||||
            return true;
 | 
			
		||||
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
package com.lishid.openinv.internal.v1_8_R1;
 | 
			
		||||
package com.lishid.openinv.internal.v1_8_R2;
 | 
			
		||||
 | 
			
		||||
import java.lang.reflect.Field;
 | 
			
		||||
 | 
			
		||||
@@ -25,12 +25,14 @@ import com.lishid.openinv.OpenInv;
 | 
			
		||||
import com.lishid.openinv.Permissions;
 | 
			
		||||
import com.lishid.openinv.internal.IInventoryAccess;
 | 
			
		||||
 | 
			
		||||
import org.bukkit.craftbukkit.v1_8_R2.inventory.CraftInventory;
 | 
			
		||||
 | 
			
		||||
//Volatile
 | 
			
		||||
import net.minecraft.server.v1_8_R1.*;
 | 
			
		||||
import org.bukkit.craftbukkit.v1_8_R1.inventory.*;
 | 
			
		||||
import net.minecraft.server.v1_8_R2.IInventory;
 | 
			
		||||
 | 
			
		||||
public class InventoryAccess implements IInventoryAccess {
 | 
			
		||||
    public boolean check(Inventory inventory, HumanEntity player) {
 | 
			
		||||
    @Override
 | 
			
		||||
	public boolean check(Inventory inventory, HumanEntity player) {
 | 
			
		||||
        IInventory inv = grabInventory(inventory);
 | 
			
		||||
        
 | 
			
		||||
        if (inv instanceof SpecialPlayerInventory) {
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
package com.lishid.openinv.internal.v1_8_R1;
 | 
			
		||||
package com.lishid.openinv.internal.v1_8_R2;
 | 
			
		||||
 | 
			
		||||
import java.io.File;
 | 
			
		||||
import java.util.UUID;
 | 
			
		||||
@@ -27,13 +27,16 @@ import com.lishid.openinv.OpenInv;
 | 
			
		||||
import com.lishid.openinv.internal.IPlayerDataManager;
 | 
			
		||||
import com.mojang.authlib.GameProfile;
 | 
			
		||||
 | 
			
		||||
//Volatile
 | 
			
		||||
import net.minecraft.server.v1_8_R1.*;
 | 
			
		||||
import org.bukkit.craftbukkit.v1_8_R2.CraftServer;
 | 
			
		||||
 | 
			
		||||
import org.bukkit.craftbukkit.v1_8_R1.*;
 | 
			
		||||
import net.minecraft.server.v1_8_R2.EntityPlayer;
 | 
			
		||||
//Volatile
 | 
			
		||||
import net.minecraft.server.v1_8_R2.MinecraftServer;
 | 
			
		||||
import net.minecraft.server.v1_8_R2.PlayerInteractManager;
 | 
			
		||||
 | 
			
		||||
public class PlayerDataManager implements IPlayerDataManager {
 | 
			
		||||
    public Player loadPlayer(String name) {
 | 
			
		||||
    @Override
 | 
			
		||||
	public Player loadPlayer(String name) {
 | 
			
		||||
        try {
 | 
			
		||||
            UUID uuid = matchUser(name);
 | 
			
		||||
            if (uuid == null) {
 | 
			
		||||
@@ -14,10 +14,12 @@
 | 
			
		||||
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
package com.lishid.openinv.internal.v1_8_R1;
 | 
			
		||||
package com.lishid.openinv.internal.v1_8_R2;
 | 
			
		||||
 | 
			
		||||
//Volatile
 | 
			
		||||
import net.minecraft.server.v1_8_R1.*;
 | 
			
		||||
import net.minecraft.server.v1_8_R2.ContainerChest;
 | 
			
		||||
import net.minecraft.server.v1_8_R2.EntityHuman;
 | 
			
		||||
import net.minecraft.server.v1_8_R2.IInventory;
 | 
			
		||||
 | 
			
		||||
public class SilentContainerChest extends ContainerChest {
 | 
			
		||||
    public IInventory inv;
 | 
			
		||||
@@ -14,32 +14,38 @@
 | 
			
		||||
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
package com.lishid.openinv.internal.v1_8_R1;
 | 
			
		||||
package com.lishid.openinv.internal.v1_8_R2;
 | 
			
		||||
 | 
			
		||||
import java.lang.reflect.Field;
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
import com.lishid.openinv.OpenInv;
 | 
			
		||||
import com.lishid.openinv.internal.ISpecialEnderChest;
 | 
			
		||||
 | 
			
		||||
import org.bukkit.entity.HumanEntity;
 | 
			
		||||
import org.bukkit.entity.Player;
 | 
			
		||||
import org.bukkit.inventory.Inventory;
 | 
			
		||||
import org.bukkit.inventory.InventoryHolder;
 | 
			
		||||
 | 
			
		||||
import com.lishid.openinv.OpenInv;
 | 
			
		||||
import com.lishid.openinv.internal.ISpecialEnderChest;
 | 
			
		||||
 | 
			
		||||
import org.bukkit.craftbukkit.v1_8_R2.entity.CraftHumanEntity;
 | 
			
		||||
import org.bukkit.craftbukkit.v1_8_R2.entity.CraftPlayer;
 | 
			
		||||
import org.bukkit.craftbukkit.v1_8_R2.inventory.CraftInventory;
 | 
			
		||||
 | 
			
		||||
//Volatile
 | 
			
		||||
import net.minecraft.server.v1_8_R1.*;
 | 
			
		||||
import org.bukkit.craftbukkit.v1_8_R1.entity.*;
 | 
			
		||||
import org.bukkit.craftbukkit.v1_8_R1.inventory.*;
 | 
			
		||||
import net.minecraft.server.v1_8_R2.EntityHuman;
 | 
			
		||||
import net.minecraft.server.v1_8_R2.IInventory;
 | 
			
		||||
import net.minecraft.server.v1_8_R2.InventoryEnderChest;
 | 
			
		||||
import net.minecraft.server.v1_8_R2.InventorySubcontainer;
 | 
			
		||||
import net.minecraft.server.v1_8_R2.ItemStack;
 | 
			
		||||
 | 
			
		||||
public class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest {
 | 
			
		||||
    public List<HumanEntity> transaction = new ArrayList<HumanEntity>();
 | 
			
		||||
    public boolean playerOnline = false;
 | 
			
		||||
    private CraftPlayer owner;
 | 
			
		||||
    private InventoryEnderChest enderChest;
 | 
			
		||||
    private final CraftPlayer owner;
 | 
			
		||||
    private final InventoryEnderChest enderChest;
 | 
			
		||||
    private int maxStack = MAX_STACK;
 | 
			
		||||
    private CraftInventory inventory = new CraftInventory(this);
 | 
			
		||||
    private final CraftInventory inventory = new CraftInventory(this);
 | 
			
		||||
 | 
			
		||||
    public SpecialEnderChest(Player p, Boolean online) {
 | 
			
		||||
        super(((CraftPlayer) p).getHandle().getEnderChest().getName(), ((CraftPlayer) p).getHandle().getEnderChest().hasCustomName(), ((CraftPlayer) p).getHandle().getEnderChest().getSize());
 | 
			
		||||
@@ -50,18 +56,21 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento
 | 
			
		||||
        OpenInv.enderChests.put(owner.getName().toLowerCase(), this);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public Inventory getBukkitInventory() {
 | 
			
		||||
    @Override
 | 
			
		||||
	public Inventory getBukkitInventory() {
 | 
			
		||||
        return inventory;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void InventoryRemovalCheck() {
 | 
			
		||||
    @Override
 | 
			
		||||
	public void InventoryRemovalCheck() {
 | 
			
		||||
        owner.saveData();
 | 
			
		||||
        if (transaction.isEmpty() && !playerOnline) {
 | 
			
		||||
            OpenInv.enderChests.remove(owner.getName().toLowerCase());
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void PlayerGoOnline(Player p) {
 | 
			
		||||
    @Override
 | 
			
		||||
	public void PlayerGoOnline(Player p) {
 | 
			
		||||
        if (!playerOnline) {
 | 
			
		||||
            try {
 | 
			
		||||
                InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest();
 | 
			
		||||
@@ -75,40 +84,49 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void PlayerGoOffline() {
 | 
			
		||||
    @Override
 | 
			
		||||
	public void PlayerGoOffline() {
 | 
			
		||||
        playerOnline = false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public ItemStack[] getContents() {
 | 
			
		||||
    @Override
 | 
			
		||||
	public ItemStack[] getContents() {
 | 
			
		||||
        return this.items;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void onOpen(CraftHumanEntity who) {
 | 
			
		||||
    @Override
 | 
			
		||||
	public void onOpen(CraftHumanEntity who) {
 | 
			
		||||
        transaction.add(who);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void onClose(CraftHumanEntity who) {
 | 
			
		||||
    @Override
 | 
			
		||||
	public void onClose(CraftHumanEntity who) {
 | 
			
		||||
        transaction.remove(who);
 | 
			
		||||
        this.InventoryRemovalCheck();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public List<HumanEntity> getViewers() {
 | 
			
		||||
    @Override
 | 
			
		||||
	public List<HumanEntity> getViewers() {
 | 
			
		||||
        return transaction;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public InventoryHolder getOwner() {
 | 
			
		||||
    @Override
 | 
			
		||||
	public InventoryHolder getOwner() {
 | 
			
		||||
        return this.owner;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setMaxStackSize(int size) {
 | 
			
		||||
    @Override
 | 
			
		||||
	public void setMaxStackSize(int size) {
 | 
			
		||||
        maxStack = size;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public int getMaxStackSize() {
 | 
			
		||||
    @Override
 | 
			
		||||
	public int getMaxStackSize() {
 | 
			
		||||
        return maxStack;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean a(EntityHuman entityhuman) {
 | 
			
		||||
    @Override
 | 
			
		||||
	public boolean a(EntityHuman entityhuman) {
 | 
			
		||||
        return true;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -120,7 +138,8 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void update() {
 | 
			
		||||
    @Override
 | 
			
		||||
	public void update() {
 | 
			
		||||
        enderChest.update();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
package com.lishid.openinv.internal.v1_8_R1;
 | 
			
		||||
package com.lishid.openinv.internal.v1_8_R2;
 | 
			
		||||
 | 
			
		||||
import org.bukkit.entity.Player;
 | 
			
		||||
import org.bukkit.inventory.Inventory;
 | 
			
		||||
@@ -23,15 +23,19 @@ import com.lishid.openinv.OpenInv;
 | 
			
		||||
import com.lishid.openinv.internal.ISpecialPlayerInventory;
 | 
			
		||||
 | 
			
		||||
//Volatile
 | 
			
		||||
import net.minecraft.server.v1_8_R1.*;
 | 
			
		||||
import org.bukkit.craftbukkit.v1_8_R1.entity.*;
 | 
			
		||||
import org.bukkit.craftbukkit.v1_8_R1.inventory.*;
 | 
			
		||||
import org.bukkit.craftbukkit.v1_8_R2.entity.CraftHumanEntity;
 | 
			
		||||
import org.bukkit.craftbukkit.v1_8_R2.entity.CraftPlayer;
 | 
			
		||||
import org.bukkit.craftbukkit.v1_8_R2.inventory.CraftInventory;
 | 
			
		||||
 | 
			
		||||
import net.minecraft.server.v1_8_R2.EntityHuman;
 | 
			
		||||
import net.minecraft.server.v1_8_R2.ItemStack;
 | 
			
		||||
import net.minecraft.server.v1_8_R2.PlayerInventory;
 | 
			
		||||
 | 
			
		||||
public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory {
 | 
			
		||||
    CraftPlayer owner;
 | 
			
		||||
    public boolean playerOnline = false;
 | 
			
		||||
    private ItemStack[] extra = new ItemStack[5];
 | 
			
		||||
    private CraftInventory inventory = new CraftInventory(this);
 | 
			
		||||
    private final ItemStack[] extra = new ItemStack[5];
 | 
			
		||||
    private final CraftInventory inventory = new CraftInventory(this);
 | 
			
		||||
 | 
			
		||||
    public SpecialPlayerInventory(Player p, Boolean online) {
 | 
			
		||||
        super(((CraftPlayer) p).getHandle());
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
name: OpenInv
 | 
			
		||||
main: com.lishid.openinv.OpenInv
 | 
			
		||||
version: 2.2.6
 | 
			
		||||
version: 2.2.7
 | 
			
		||||
author: lishid
 | 
			
		||||
description: >
 | 
			
		||||
             This plugin allows you to open a player's inventory as a chest and interact with it in real time.
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user