Compare commits

...

1 Commits
2.2.6 ... 2.2.7

Author SHA1 Message Date
Jikoo
4058463f7f 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
2015-03-11 16:48:21 -04:00
9 changed files with 103 additions and 55 deletions

View File

@@ -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,6 +42,7 @@ public class OpenEnderPluginCommand implements CommandExecutor {
this.plugin = plugin; this.plugin = plugin;
} }
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { 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.");
@@ -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;

View File

@@ -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,6 +42,7 @@ public class OpenInvPluginCommand implements CommandExecutor {
this.plugin = plugin; this.plugin = plugin;
} }
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { 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.");
@@ -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;

View File

@@ -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,17 +22,21 @@ 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 {
@Override
public boolean IsAnyChestNeeded(Player p, int x, int y, int z) { 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();
@@ -56,10 +60,11 @@ public class AnySilentChest implements IAnySilentChest {
return false; return false;
} }
@Override
public boolean ActivateChest(Player p, boolean anychest, boolean silentchest, int x, int y, int z) { 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;

View File

@@ -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,11 +25,13 @@ 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 {
@Override
public boolean check(Inventory inventory, HumanEntity player) { public boolean check(Inventory inventory, HumanEntity player) {
IInventory inv = grabInventory(inventory); IInventory inv = grabInventory(inventory);

View File

@@ -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,12 +27,15 @@ 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 {
@Override
public Player loadPlayer(String name) { public Player loadPlayer(String name) {
try { try {
UUID uuid = matchUser(name); UUID uuid = matchUser(name);

View File

@@ -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;

View File

@@ -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,10 +56,12 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento
OpenInv.enderChests.put(owner.getName().toLowerCase(), this); OpenInv.enderChests.put(owner.getName().toLowerCase(), this);
} }
@Override
public Inventory getBukkitInventory() { public Inventory getBukkitInventory() {
return inventory; return inventory;
} }
@Override
public void InventoryRemovalCheck() { public void InventoryRemovalCheck() {
owner.saveData(); owner.saveData();
if (transaction.isEmpty() && !playerOnline) { if (transaction.isEmpty() && !playerOnline) {
@@ -61,6 +69,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento
} }
} }
@Override
public void PlayerGoOnline(Player p) { public void PlayerGoOnline(Player p) {
if (!playerOnline) { if (!playerOnline) {
try { try {
@@ -75,39 +84,48 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento
} }
} }
@Override
public void PlayerGoOffline() { public void PlayerGoOffline() {
playerOnline = false; playerOnline = false;
} }
@Override
public ItemStack[] getContents() { public ItemStack[] getContents() {
return this.items; return this.items;
} }
@Override
public void onOpen(CraftHumanEntity who) { public void onOpen(CraftHumanEntity who) {
transaction.add(who); transaction.add(who);
} }
@Override
public void onClose(CraftHumanEntity who) { public void onClose(CraftHumanEntity who) {
transaction.remove(who); transaction.remove(who);
this.InventoryRemovalCheck(); this.InventoryRemovalCheck();
} }
@Override
public List<HumanEntity> getViewers() { public List<HumanEntity> getViewers() {
return transaction; return transaction;
} }
@Override
public InventoryHolder getOwner() { public InventoryHolder getOwner() {
return this.owner; return this.owner;
} }
@Override
public void setMaxStackSize(int size) { public void setMaxStackSize(int size) {
maxStack = size; maxStack = size;
} }
@Override
public int getMaxStackSize() { public int getMaxStackSize() {
return maxStack; return maxStack;
} }
@Override
public boolean a(EntityHuman entityhuman) { public boolean a(EntityHuman entityhuman) {
return true; return true;
} }
@@ -120,6 +138,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento
} }
@Override
public void update() { public void update() {
enderChest.update(); enderChest.update();
} }

View File

@@ -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());

View File

@@ -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.