OpenInv 2.2.7
Updated for Spigot 1.8.3 Dropped support for all other versions Fixed lookup not working for players on first login/incomplete names
This commit is contained in:
@@ -17,6 +17,7 @@
|
|||||||
package com.lishid.openinv.commands;
|
package com.lishid.openinv.commands;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
@@ -41,7 +42,8 @@ public class OpenEnderPluginCommand implements CommandExecutor {
|
|||||||
this.plugin = plugin;
|
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)) {
|
if (!(sender instanceof Player)) {
|
||||||
sender.sendMessage(ChatColor.RED + "You can't use this from the console.");
|
sender.sendMessage(ChatColor.RED + "You can't use this from the console.");
|
||||||
return true;
|
return true;
|
||||||
@@ -82,6 +84,11 @@ public class OpenEnderPluginCommand implements CommandExecutor {
|
|||||||
new BukkitRunnable() {
|
new BukkitRunnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
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);
|
final OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(name);
|
||||||
if (Bukkit.getPlayer(senderID) == null) {
|
if (Bukkit.getPlayer(senderID) == null) {
|
||||||
return;
|
return;
|
||||||
|
@@ -17,6 +17,7 @@
|
|||||||
package com.lishid.openinv.commands;
|
package com.lishid.openinv.commands;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
@@ -41,7 +42,8 @@ public class OpenInvPluginCommand implements CommandExecutor {
|
|||||||
this.plugin = plugin;
|
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)) {
|
if (!(sender instanceof Player)) {
|
||||||
sender.sendMessage(ChatColor.RED + "You can't use this from the console.");
|
sender.sendMessage(ChatColor.RED + "You can't use this from the console.");
|
||||||
return true;
|
return true;
|
||||||
@@ -76,11 +78,15 @@ public class OpenInvPluginCommand implements CommandExecutor {
|
|||||||
name = args[0];
|
name = args[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
sender.sendMessage(ChatColor.GREEN + "Starting inventory lookup.");
|
|
||||||
final UUID senderID = player.getUniqueId();
|
final UUID senderID = player.getUniqueId();
|
||||||
new BukkitRunnable() {
|
new BukkitRunnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
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);
|
final OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(name);
|
||||||
if (Bukkit.getPlayer(senderID) == null) {
|
if (Bukkit.getPlayer(senderID) == null) {
|
||||||
return;
|
return;
|
||||||
|
@@ -14,7 +14,7 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* 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.ChatColor;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@@ -22,18 +22,22 @@ import org.bukkit.entity.Player;
|
|||||||
import com.lishid.openinv.OpenInv;
|
import com.lishid.openinv.OpenInv;
|
||||||
import com.lishid.openinv.internal.IAnySilentChest;
|
import com.lishid.openinv.internal.IAnySilentChest;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//Volatile
|
//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 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
|
// FOR REFERENCE, LOOK AT net.minecraft.server.BlockChest
|
||||||
EntityPlayer player = ((CraftPlayer) p).getHandle();
|
EntityPlayer player = ((CraftPlayer) p).getHandle();
|
||||||
World world = player.world;
|
World world = player.world;
|
||||||
@@ -56,10 +60,11 @@ public class AnySilentChest implements IAnySilentChest {
|
|||||||
return false;
|
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();
|
EntityPlayer player = ((CraftPlayer) p).getHandle();
|
||||||
World world = player.world;
|
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)
|
if (chest == null)
|
||||||
return true;
|
return true;
|
||||||
|
|
@@ -14,7 +14,7 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* 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.lang.reflect.Field;
|
||||||
|
|
||||||
@@ -25,12 +25,14 @@ import com.lishid.openinv.OpenInv;
|
|||||||
import com.lishid.openinv.Permissions;
|
import com.lishid.openinv.Permissions;
|
||||||
import com.lishid.openinv.internal.IInventoryAccess;
|
import com.lishid.openinv.internal.IInventoryAccess;
|
||||||
|
|
||||||
|
import org.bukkit.craftbukkit.v1_8_R2.inventory.CraftInventory;
|
||||||
|
|
||||||
//Volatile
|
//Volatile
|
||||||
import net.minecraft.server.v1_8_R1.*;
|
import net.minecraft.server.v1_8_R2.IInventory;
|
||||||
import org.bukkit.craftbukkit.v1_8_R1.inventory.*;
|
|
||||||
|
|
||||||
public class InventoryAccess implements IInventoryAccess {
|
public class InventoryAccess implements IInventoryAccess {
|
||||||
public boolean check(Inventory inventory, HumanEntity player) {
|
@Override
|
||||||
|
public boolean check(Inventory inventory, HumanEntity player) {
|
||||||
IInventory inv = grabInventory(inventory);
|
IInventory inv = grabInventory(inventory);
|
||||||
|
|
||||||
if (inv instanceof SpecialPlayerInventory) {
|
if (inv instanceof SpecialPlayerInventory) {
|
@@ -14,7 +14,7 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* 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.io.File;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
@@ -27,13 +27,16 @@ import com.lishid.openinv.OpenInv;
|
|||||||
import com.lishid.openinv.internal.IPlayerDataManager;
|
import com.lishid.openinv.internal.IPlayerDataManager;
|
||||||
import com.mojang.authlib.GameProfile;
|
import com.mojang.authlib.GameProfile;
|
||||||
|
|
||||||
//Volatile
|
import org.bukkit.craftbukkit.v1_8_R2.CraftServer;
|
||||||
import net.minecraft.server.v1_8_R1.*;
|
|
||||||
|
|
||||||
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 class PlayerDataManager implements IPlayerDataManager {
|
||||||
public Player loadPlayer(String name) {
|
@Override
|
||||||
|
public Player loadPlayer(String name) {
|
||||||
try {
|
try {
|
||||||
UUID uuid = matchUser(name);
|
UUID uuid = matchUser(name);
|
||||||
if (uuid == null) {
|
if (uuid == null) {
|
@@ -14,10 +14,12 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* 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
|
//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 class SilentContainerChest extends ContainerChest {
|
||||||
public IInventory inv;
|
public IInventory inv;
|
@@ -14,32 +14,38 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* 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.lang.reflect.Field;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.lishid.openinv.OpenInv;
|
|
||||||
import com.lishid.openinv.internal.ISpecialEnderChest;
|
|
||||||
|
|
||||||
import org.bukkit.entity.HumanEntity;
|
import org.bukkit.entity.HumanEntity;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.Inventory;
|
import org.bukkit.inventory.Inventory;
|
||||||
import org.bukkit.inventory.InventoryHolder;
|
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
|
//Volatile
|
||||||
import net.minecraft.server.v1_8_R1.*;
|
import net.minecraft.server.v1_8_R2.EntityHuman;
|
||||||
import org.bukkit.craftbukkit.v1_8_R1.entity.*;
|
import net.minecraft.server.v1_8_R2.IInventory;
|
||||||
import org.bukkit.craftbukkit.v1_8_R1.inventory.*;
|
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 class SpecialEnderChest extends InventorySubcontainer implements IInventory, ISpecialEnderChest {
|
||||||
public List<HumanEntity> transaction = new ArrayList<HumanEntity>();
|
public List<HumanEntity> transaction = new ArrayList<HumanEntity>();
|
||||||
public boolean playerOnline = false;
|
public boolean playerOnline = false;
|
||||||
private CraftPlayer owner;
|
private final CraftPlayer owner;
|
||||||
private InventoryEnderChest enderChest;
|
private final InventoryEnderChest enderChest;
|
||||||
private int maxStack = MAX_STACK;
|
private int maxStack = MAX_STACK;
|
||||||
private CraftInventory inventory = new CraftInventory(this);
|
private final CraftInventory inventory = new CraftInventory(this);
|
||||||
|
|
||||||
public SpecialEnderChest(Player p, Boolean online) {
|
public SpecialEnderChest(Player p, Boolean online) {
|
||||||
super(((CraftPlayer) p).getHandle().getEnderChest().getName(), ((CraftPlayer) p).getHandle().getEnderChest().hasCustomName(), ((CraftPlayer) p).getHandle().getEnderChest().getSize());
|
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);
|
OpenInv.enderChests.put(owner.getName().toLowerCase(), this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Inventory getBukkitInventory() {
|
@Override
|
||||||
|
public Inventory getBukkitInventory() {
|
||||||
return inventory;
|
return inventory;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void InventoryRemovalCheck() {
|
@Override
|
||||||
|
public void InventoryRemovalCheck() {
|
||||||
owner.saveData();
|
owner.saveData();
|
||||||
if (transaction.isEmpty() && !playerOnline) {
|
if (transaction.isEmpty() && !playerOnline) {
|
||||||
OpenInv.enderChests.remove(owner.getName().toLowerCase());
|
OpenInv.enderChests.remove(owner.getName().toLowerCase());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PlayerGoOnline(Player p) {
|
@Override
|
||||||
|
public void PlayerGoOnline(Player p) {
|
||||||
if (!playerOnline) {
|
if (!playerOnline) {
|
||||||
try {
|
try {
|
||||||
InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest();
|
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;
|
playerOnline = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ItemStack[] getContents() {
|
@Override
|
||||||
|
public ItemStack[] getContents() {
|
||||||
return this.items;
|
return this.items;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onOpen(CraftHumanEntity who) {
|
@Override
|
||||||
|
public void onOpen(CraftHumanEntity who) {
|
||||||
transaction.add(who);
|
transaction.add(who);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onClose(CraftHumanEntity who) {
|
@Override
|
||||||
|
public void onClose(CraftHumanEntity who) {
|
||||||
transaction.remove(who);
|
transaction.remove(who);
|
||||||
this.InventoryRemovalCheck();
|
this.InventoryRemovalCheck();
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<HumanEntity> getViewers() {
|
@Override
|
||||||
|
public List<HumanEntity> getViewers() {
|
||||||
return transaction;
|
return transaction;
|
||||||
}
|
}
|
||||||
|
|
||||||
public InventoryHolder getOwner() {
|
@Override
|
||||||
|
public InventoryHolder getOwner() {
|
||||||
return this.owner;
|
return this.owner;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setMaxStackSize(int size) {
|
@Override
|
||||||
|
public void setMaxStackSize(int size) {
|
||||||
maxStack = size;
|
maxStack = size;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getMaxStackSize() {
|
@Override
|
||||||
|
public int getMaxStackSize() {
|
||||||
return maxStack;
|
return maxStack;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean a(EntityHuman entityhuman) {
|
@Override
|
||||||
|
public boolean a(EntityHuman entityhuman) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -120,7 +138,8 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void update() {
|
@Override
|
||||||
|
public void update() {
|
||||||
enderChest.update();
|
enderChest.update();
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -14,7 +14,7 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* 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.entity.Player;
|
||||||
import org.bukkit.inventory.Inventory;
|
import org.bukkit.inventory.Inventory;
|
||||||
@@ -23,15 +23,19 @@ import com.lishid.openinv.OpenInv;
|
|||||||
import com.lishid.openinv.internal.ISpecialPlayerInventory;
|
import com.lishid.openinv.internal.ISpecialPlayerInventory;
|
||||||
|
|
||||||
//Volatile
|
//Volatile
|
||||||
import net.minecraft.server.v1_8_R1.*;
|
import org.bukkit.craftbukkit.v1_8_R2.entity.CraftHumanEntity;
|
||||||
import org.bukkit.craftbukkit.v1_8_R1.entity.*;
|
import org.bukkit.craftbukkit.v1_8_R2.entity.CraftPlayer;
|
||||||
import org.bukkit.craftbukkit.v1_8_R1.inventory.*;
|
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 {
|
public class SpecialPlayerInventory extends PlayerInventory implements ISpecialPlayerInventory {
|
||||||
CraftPlayer owner;
|
CraftPlayer owner;
|
||||||
public boolean playerOnline = false;
|
public boolean playerOnline = false;
|
||||||
private ItemStack[] extra = new ItemStack[5];
|
private final ItemStack[] extra = new ItemStack[5];
|
||||||
private CraftInventory inventory = new CraftInventory(this);
|
private final CraftInventory inventory = new CraftInventory(this);
|
||||||
|
|
||||||
public SpecialPlayerInventory(Player p, Boolean online) {
|
public SpecialPlayerInventory(Player p, Boolean online) {
|
||||||
super(((CraftPlayer) p).getHandle());
|
super(((CraftPlayer) p).getHandle());
|
@@ -1,6 +1,6 @@
|
|||||||
name: OpenInv
|
name: OpenInv
|
||||||
main: com.lishid.openinv.OpenInv
|
main: com.lishid.openinv.OpenInv
|
||||||
version: 2.2.6
|
version: 2.2.7
|
||||||
author: lishid
|
author: lishid
|
||||||
description: >
|
description: >
|
||||||
This plugin allows you to open a player's inventory as a chest and interact with it in real time.
|
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