diff --git a/README b/README.MD
similarity index 55%
rename from README
rename to README.MD
index 209e1e8..8536e48 100644
--- a/README
+++ b/README.MD
@@ -1,3 +1,15 @@
+## Goals
+This fork of OpenInv was created when the lag caused by offline player lookups post-UUID migration became too much to bear. Overall, it does not differ much from the original.
+
+### Changes of Note
+- Removed updater
+- Removed wand
+
+## Previous Versions
+Any version of Minecraft this fork has been existent for should have a [release](https://github.com/Jikoo/OpenInv/releases) tagged. Features are not backported, however.
+
+## License
+```
Copyright (C) 2011-2014 lishid. All rights reserved.
This program is free software: you can redistribute it and/or modify
@@ -10,4 +22,5 @@ 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 .
\ No newline at end of file
+along with this program. If not, see .
+```
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..5d02ec4
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,28 @@
+
+ 4.0.0
+ OpenInv
+ OpenInv
+ 0.0.1-SNAPSHOT
+
+
+
+ org.spigotmc
+ spigot
+ 1.9-R0.1-SNAPSHOT
+ provided
+
+
+
+
+
+
+ maven-compiler-plugin
+ 3.1
+
+ 1.6
+ 1.6
+
+
+
+
+
\ No newline at end of file
diff --git a/src/com/lishid/openinv/OpenInv.java b/src/com/lishid/openinv/OpenInv.java
deleted file mode 100644
index b1be4ab..0000000
--- a/src/com/lishid/openinv/OpenInv.java
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- * Copyright (C) 2011-2014 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 .
- */
-
-package com.lishid.openinv;
-
-import java.util.HashMap;
-import java.util.logging.Logger;
-
-import org.bukkit.ChatColor;
-import org.bukkit.configuration.file.FileConfiguration;
-import org.bukkit.entity.Player;
-import org.bukkit.permissions.Permissible;
-import org.bukkit.plugin.PluginManager;
-import org.bukkit.plugin.java.JavaPlugin;
-
-import com.lishid.openinv.commands.AnyChestPluginCommand;
-import com.lishid.openinv.commands.OpenEnderPluginCommand;
-import com.lishid.openinv.commands.OpenInvPluginCommand;
-import com.lishid.openinv.commands.SearchInvPluginCommand;
-import com.lishid.openinv.commands.SilentChestPluginCommand;
-import com.lishid.openinv.internal.IAnySilentChest;
-import com.lishid.openinv.internal.IInventoryAccess;
-import com.lishid.openinv.internal.IPlayerDataManager;
-import com.lishid.openinv.internal.ISpecialEnderChest;
-import com.lishid.openinv.internal.ISpecialPlayerInventory;
-import com.lishid.openinv.internal.InternalAccessor;
-
-/**
- * Open other player's inventory
- *
- * @author lishid
- */
-public class OpenInv extends JavaPlugin {
- public static final Logger logger = Logger.getLogger("Minecraft.OpenInv");
-
- public static HashMap inventories = new HashMap();
- public static HashMap enderChests = new HashMap();
-
- public static OpenInv mainPlugin;
-
- public static IPlayerDataManager playerLoader;
- public static IInventoryAccess inventoryAccess;
- public static IAnySilentChest anySilentChest;
-
- @Override
- public void onEnable() {
- // Get plugin manager
- PluginManager pm = getServer().getPluginManager();
-
- // Version check
- boolean success = InternalAccessor.Initialize(this.getServer());
-
- if (!success) {
- OpenInv.log("Your version of CraftBukkit is not supported.");
- OpenInv.log("Please look for an updated version of OpenInv.");
- pm.disablePlugin(this);
- return;
- }
-
- playerLoader = InternalAccessor.Instance.newPlayerDataManager();
- inventoryAccess = InternalAccessor.Instance.newInventoryAccess();
- anySilentChest = InternalAccessor.Instance.newAnySilentChest();
-
- mainPlugin = this;
- FileConfiguration config = getConfig();
- config.set("NotifySilentChest", config.getBoolean("NotifySilentChest", true));
- config.set("NotifyAnyChest", config.getBoolean("NotifyAnyChest", true));
- config.addDefault("NotifySilentChest", true);
- config.addDefault("NotifyAnyChest", true);
- config.options().copyDefaults(true);
- saveConfig();
-
- pm.registerEvents(new OpenInvPlayerListener(), this);
- pm.registerEvents(new OpenInvInventoryListener(), this);
-
- getCommand("openinv").setExecutor(new OpenInvPluginCommand(this));
- getCommand("searchinv").setExecutor(new SearchInvPluginCommand());
- getCommand("silentchest").setExecutor(new SilentChestPluginCommand(this));
- getCommand("anychest").setExecutor(new AnyChestPluginCommand(this));
- getCommand("openender").setExecutor(new OpenEnderPluginCommand(this));
-
- }
-
- public static boolean NotifySilentChest() {
- return mainPlugin.getConfig().getBoolean("NotifySilentChest", true);
- }
-
- public static boolean NotifyAnyChest() {
- return mainPlugin.getConfig().getBoolean("NotifyAnyChest", true);
- }
-
- public static boolean GetCheckForUpdates() {
- return mainPlugin.getConfig().getBoolean("CheckForUpdates", true);
- }
-
- public static boolean GetPlayerItemOpenInvStatus(String name) {
- return mainPlugin.getConfig().getBoolean("ItemOpenInv." + name.toLowerCase() + ".toggle", false);
- }
-
- public static void SetPlayerItemOpenInvStatus(String name, boolean status) {
- mainPlugin.getConfig().set("ItemOpenInv." + name.toLowerCase() + ".toggle", status);
- mainPlugin.saveConfig();
- }
-
- public static boolean GetPlayerSilentChestStatus(String name) {
- return mainPlugin.getConfig().getBoolean("SilentChest." + name.toLowerCase() + ".toggle", false);
- }
-
- public static void SetPlayerSilentChestStatus(String name, boolean status) {
- mainPlugin.getConfig().set("SilentChest." + name.toLowerCase() + ".toggle", status);
- mainPlugin.saveConfig();
- }
-
- public static boolean GetPlayerAnyChestStatus(String name) {
- return mainPlugin.getConfig().getBoolean("AnyChest." + name.toLowerCase() + ".toggle", true);
- }
-
- public static void SetPlayerAnyChestStatus(String name, boolean status) {
- mainPlugin.getConfig().set("AnyChest." + name.toLowerCase() + ".toggle", status);
- mainPlugin.saveConfig();
- }
-
- public static int GetItemOpenInvItem() {
- if (mainPlugin.getConfig().get("ItemOpenInvItemID") == null) {
- SaveToConfig("ItemOpenInvItemID", 280);
- }
- return mainPlugin.getConfig().getInt("ItemOpenInvItemID", 280);
- }
-
- public static Object GetFromConfig(String data, Object defaultValue) {
- Object val = mainPlugin.getConfig().get(data);
- if (val == null) {
- mainPlugin.getConfig().set(data, defaultValue);
- return defaultValue;
- }
- else {
- return val;
- }
- }
-
- public static void SaveToConfig(String data, Object value) {
- mainPlugin.getConfig().set(data, value);
- mainPlugin.saveConfig();
- }
-
- /**
- * Log an information
- */
- public static void log(String text) {
- logger.info("[OpenInv] " + text);
- }
-
- /**
- * Log an error
- */
- public static void log(Throwable e) {
- logger.severe("[OpenInv] " + e.toString());
- e.printStackTrace();
- }
-
- public static void ShowHelp(Player player) {
- player.sendMessage(ChatColor.GREEN + "/openinv - Open a player's inventory");
- player.sendMessage(ChatColor.GREEN + " (aliases: oi, inv, open)");
- player.sendMessage(ChatColor.GREEN + "/openender - Open a player's enderchest");
- player.sendMessage(ChatColor.GREEN + " (aliases: oe, enderchest)");
- player.sendMessage(ChatColor.GREEN + "/toggleopeninv - Toggle item openinv function");
- player.sendMessage(ChatColor.GREEN + " (aliases: toi, toggleoi, toggleinv)");
- player.sendMessage(ChatColor.GREEN + "/searchinv - [MinAmount] - ");
- player.sendMessage(ChatColor.GREEN + " Search and list players having a specific item.");
- player.sendMessage(ChatColor.GREEN + " (aliases: si, search)");
- player.sendMessage(ChatColor.GREEN + "/anychest - Toggle anychest function");
- player.sendMessage(ChatColor.GREEN + " (aliases: ac)");
- player.sendMessage(ChatColor.GREEN + "/silentchest - Toggle silent chest function");
- player.sendMessage(ChatColor.GREEN + " (aliases: sc, silent)");
- }
-
- public static boolean hasPermission(Permissible player, String permission) {
- String[] parts = permission.split("\\.");
- String perm = "";
- for (int i = 0; i < parts.length; i++) {
- if (player.hasPermission(perm + "*")) {
- return true;
- }
- perm += parts[i] + ".";
- }
- return player.hasPermission(permission);
- }
-}
\ No newline at end of file
diff --git a/src/com/lishid/openinv/internal/v1_9_R1/PlayerDataManager.java b/src/com/lishid/openinv/internal/v1_9_R1/PlayerDataManager.java
deleted file mode 100644
index 73c15dd..0000000
--- a/src/com/lishid/openinv/internal/v1_9_R1/PlayerDataManager.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright (C) 2011-2014 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 .
- */
-
-package com.lishid.openinv.internal.v1_9_R1;
-
-import java.io.File;
-import java.util.UUID;
-
-import org.bukkit.Bukkit;
-import org.bukkit.OfflinePlayer;
-import org.bukkit.entity.Player;
-
-import com.lishid.openinv.OpenInv;
-import com.lishid.openinv.internal.IPlayerDataManager;
-import com.mojang.authlib.GameProfile;
-
-//Volatile
-import org.bukkit.craftbukkit.v1_9_R1.CraftServer;
-
-import net.minecraft.server.v1_9_R1.EntityPlayer;
-import net.minecraft.server.v1_9_R1.MinecraftServer;
-import net.minecraft.server.v1_9_R1.PlayerInteractManager;
-
-public class PlayerDataManager implements IPlayerDataManager {
- @Override
- public Player loadPlayer(String name) {
- try {
- UUID uuid = matchUser(name);
- if (uuid == null) {
- return null;
- }
-
- // Default player folder
- File playerfolder = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "playerdata");
- if (!playerfolder.exists()) {
- return null;
- }
-
- OfflinePlayer player = Bukkit.getOfflinePlayer(uuid);
- if (player == null) {
- return null;
- }
- GameProfile profile = new GameProfile(uuid, player.getName());
- MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer();
- // Create an entity to load the player data
- EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), profile, new PlayerInteractManager(server.getWorldServer(0)));
-
- // Get the bukkit entity
- Player target = (entity == null) ? null : entity.getBukkitEntity();
- if (target != null) {
- // Load data
- target.loadData();
- // Return the entity
- return target;
- }
- }
- catch (Exception e) {
- OpenInv.log(e);
- }
-
- return null;
- }
-
- private static UUID matchUser(String search) {
- UUID found = null;
-
- String lowerSearch = search.toLowerCase();
- int delta = 2147483647;
-
- OfflinePlayer[] offlinePlayers = Bukkit.getOfflinePlayers();
- for (OfflinePlayer player : offlinePlayers) {
- String name = player.getName();
-
- if (name == null){
- continue;
- }
- if (name.equalsIgnoreCase(search)){
- return player.getUniqueId();
- }
- if (name.toLowerCase().startsWith(lowerSearch)) {
- int curDelta = name.length() - lowerSearch.length();
- if (curDelta < delta) {
- found = player.getUniqueId();
- delta = curDelta;
- }
- if (curDelta == 0) {
- break;
- }
- }
- }
-
- return found;
- }
-
- /* (non-Javadoc)
- * @see com.lishid.openinv.internal.IPlayerDataManager#loadPlayer(java.util.UUID)
- */
- @Override
- public Player loadPlayer(UUID uuid) {
- OfflinePlayer player = Bukkit.getOfflinePlayer(uuid);
- if (player == null || !player.hasPlayedBefore()) {
- return null;
- }
- GameProfile profile = new GameProfile(uuid, player.getName());
- MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer();
- // Create an entity to load the player data
- EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), profile, new PlayerInteractManager(server.getWorldServer(0)));
-
- // Get the bukkit entity
- Player target = (entity == null) ? null : entity.getBukkitEntity();
- if (target != null) {
- // Load data
- target.loadData();
- // Return the entity
- return target;
- }
- return null;
- }
-}
diff --git a/src/com/lishid/openinv/utils/ReflectionUtil.java b/src/com/lishid/openinv/utils/ReflectionUtil.java
deleted file mode 100644
index b701bd7..0000000
--- a/src/com/lishid/openinv/utils/ReflectionUtil.java
+++ /dev/null
@@ -1,510 +0,0 @@
-package com.lishid.openinv.utils;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.bukkit.Bukkit;
-
-public final class ReflectionUtil {
- private ReflectionUtil() {}
-
- public static Class> getClass(String name, PackageType type) throws Exception {
- return Class.forName(type + "." + name);
- }
-
- public static Class> getClass(String name, SubPackageType type) throws Exception {
- return Class.forName(type + "." + name);
- }
-
- public static Constructor> getConstructor(Class> clazz, Class>... parameterTypes) {
- Class>[] p = DataType.convertToPrimitive(parameterTypes);
- for (Constructor> c : clazz.getConstructors())
- if (DataType.equalsArray(DataType.convertToPrimitive(c.getParameterTypes()), p))
- return c;
- return null;
- }
-
- public static Constructor> getConstructor(String className, PackageType type, Class>... parameterTypes) throws Exception {
- return getConstructor(getClass(className, type), parameterTypes);
- }
-
- public static Constructor> getConstructor(String className, SubPackageType type, Class>... parameterTypes) throws Exception {
- return getConstructor(getClass(className, type), parameterTypes);
- }
-
- public static Object newInstance(Class> clazz, Object... args) throws Exception {
- return getConstructor(clazz, DataType.convertToPrimitive(args)).newInstance(args);
- }
-
- public static Object newInstance(String className, PackageType type, Object... args) throws Exception {
- return newInstance(getClass(className, type), args);
- }
-
- public static Object newInstance(String className, SubPackageType type, Object... args) throws Exception {
- return newInstance(getClass(className, type), args);
- }
-
- public static Method getMethod(Class> clazz, String name, Class>... parameterTypes) {
- Class>[] p = DataType.convertToPrimitive(parameterTypes);
- for (Method m : clazz.getMethods())
- if (m.getName().equals(name) && DataType.equalsArray(DataType.convertToPrimitive(m.getParameterTypes()), p))
- return m;
- return null;
- }
-
- public static Method getMethod(String className, PackageType type, String name, Class>... parameterTypes) throws Exception {
- return getMethod(getClass(className, type), name, parameterTypes);
- }
-
- public static Method getMethod(String className, SubPackageType type, String name, Class>... parameterTypes) throws Exception {
- return getMethod(getClass(className, type), name, parameterTypes);
- }
-
- public static Object invokeMethod(String name, Object instance, Object... args) throws Exception {
- return getMethod(instance.getClass(), name, DataType.convertToPrimitive(args)).invoke(instance, args);
- }
-
- public static Object invokeMethod(Class> clazz, String name, Object instance, Object... args) throws Exception {
- return getMethod(clazz, name, DataType.convertToPrimitive(args)).invoke(instance, args);
- }
-
- public static Object invokeMethod(String className, PackageType type, String name, Object instance, Object... args) throws Exception {
- return invokeMethod(getClass(className, type), name, instance, args);
- }
-
- public static Object invokeMethod(String className, SubPackageType type, String name, Object instance, Object... args) throws Exception {
- return invokeMethod(getClass(className, type), name, instance, args);
- }
-
- public static Field getField(Class> clazz, String name) throws Exception {
- Field f = clazz.getField(name);
- f.setAccessible(true);
- return f;
- }
-
- public static Field getField(String className, PackageType type, String name) throws Exception {
- return getField(getClass(className, type), name);
- }
-
- public static Field getField(String className, SubPackageType type, String name) throws Exception {
- return getField(getClass(className, type), name);
- }
-
- public static Field getDeclaredField(Class> clazz, String name) throws Exception {
- Field f = clazz.getDeclaredField(name);
- f.setAccessible(true);
- return f;
- }
-
- public static Field getDeclaredField(String className, PackageType type, String name) throws Exception {
- return getDeclaredField(getClass(className, type), name);
- }
-
- public static Field getDeclaredField(String className, SubPackageType type, String name) throws Exception {
- return getDeclaredField(getClass(className, type), name);
- }
-
- public static Object getValue(Object instance, String fieldName) throws Exception {
- return getField(instance.getClass(), fieldName).get(instance);
- }
-
- public static Object getValue(Class> clazz, Object instance, String fieldName) throws Exception {
- return getField(clazz, fieldName).get(instance);
- }
-
- public static Object getValue(String className, PackageType type, Object instance, String fieldName) throws Exception {
- return getValue(getClass(className, type), instance, fieldName);
- }
-
- public static Object getValue(String className, SubPackageType type, Object instance, String fieldName) throws Exception {
- return getValue(getClass(className, type), instance, fieldName);
- }
-
- public static Object getDeclaredValue(Object instance, String fieldName) throws Exception {
- return getDeclaredField(instance.getClass(), fieldName).get(instance);
- }
-
- public static Object getDeclaredValue(Class> clazz, Object instance, String fieldName) throws Exception {
- return getDeclaredField(clazz, fieldName).get(instance);
- }
-
- public static Object getDeclaredValue(String className, PackageType type, Object instance, String fieldName) throws Exception {
- return getDeclaredValue(getClass(className, type), instance, fieldName);
- }
-
- public static Object getDeclaredValue(String className, SubPackageType type, Object instance, String fieldName) throws Exception {
- return getDeclaredValue(getClass(className, type), instance, fieldName);
- }
-
- public static void setValue(Object instance, String fieldName, Object fieldValue) throws Exception {
- Field f = getField(instance.getClass(), fieldName);
- f.set(instance, fieldValue);
- }
-
- public static void setValue(Object instance, FieldPair pair) throws Exception {
- setValue(instance, pair.getName(), pair.getValue());
- }
-
- public static void setValue(Class> clazz, Object instance, String fieldName, Object fieldValue) throws Exception {
- Field f = getField(clazz, fieldName);
- f.set(instance, fieldValue);
- }
-
- public static void setValue(Class> clazz, Object instance, FieldPair pair) throws Exception {
- setValue(clazz, instance, pair.getName(), pair.getValue());
- }
-
- public static void setValue(String className, PackageType type, Object instance, String fieldName, Object fieldValue) throws Exception {
- setValue(getClass(className, type), instance, fieldName, fieldValue);
- }
-
- public static void setValue(String className, PackageType type, Object instance, FieldPair pair) throws Exception {
- setValue(className, type, instance, pair.getName(), pair.getValue());
- }
-
- public static void setValue(String className, SubPackageType type, Object instance, String fieldName, Object fieldValue) throws Exception {
- setValue(getClass(className, type), instance, fieldName, fieldValue);
- }
-
- public static void setValue(String className, SubPackageType type, Object instance, FieldPair pair) throws Exception {
- setValue(className, type, instance, pair.getName(), pair.getValue());
- }
-
- public static void setValues(Object instance, FieldPair... pairs) throws Exception {
- for (FieldPair pair : pairs)
- setValue(instance, pair);
- }
-
- public static void setValues(Class> clazz, Object instance, FieldPair... pairs) throws Exception {
- for (FieldPair pair : pairs)
- setValue(clazz, instance, pair);
- }
-
- public static void setValues(String className, PackageType type, Object instance, FieldPair... pairs) throws Exception {
- setValues(getClass(className, type), instance, pairs);
- }
-
- public static void setValues(String className, SubPackageType type, Object instance, FieldPair... pairs) throws Exception {
- setValues(getClass(className, type), instance, pairs);
- }
-
- public static void setDeclaredValue(Object instance, String fieldName, Object fieldValue) throws Exception {
- Field f = getDeclaredField(instance.getClass(), fieldName);
- f.set(instance, fieldValue);
- }
-
- public static void setDeclaredValue(Object instance, FieldPair pair) throws Exception {
- setDeclaredValue(instance, pair.getName(), pair.getValue());
- }
-
- public static void setDeclaredValue(Class> clazz, Object instance, String fieldName, Object fieldValue) throws Exception {
- Field f = getDeclaredField(clazz, fieldName);
- f.set(instance, fieldValue);
- }
-
- public static void setDeclaredValue(Class> clazz, Object instance, FieldPair pair) throws Exception {
- setDeclaredValue(clazz, instance, pair.getName(), pair.getValue());
- }
-
- public static void setDeclaredValue(String className, PackageType type, Object instance, String fieldName, Object fieldValue) throws Exception {
- setDeclaredValue(getClass(className, type), instance, fieldName, fieldValue);
- }
-
- public static void setDeclaredValue(String className, PackageType type, Object instance, FieldPair pair) throws Exception {
- setDeclaredValue(className, type, instance, pair.getName(), pair.getValue());
- }
-
- public static void setDeclaredValue(String className, SubPackageType type, Object instance, String fieldName, Object fieldValue) throws Exception {
- setDeclaredValue(getClass(className, type), instance, fieldName, fieldValue);
- }
-
- public static void setDeclaredValue(String className, SubPackageType type, Object instance, FieldPair pair) throws Exception {
- setDeclaredValue(className, type, instance, pair.getName(), pair.getValue());
- }
-
- public static void setDeclaredValues(Object instance, FieldPair... pairs) throws Exception {
- for (FieldPair pair : pairs)
- setDeclaredValue(instance, pair);
- }
-
- public static void setDeclaredValues(Class> clazz, Object instance, FieldPair... pairs) throws Exception {
- for (FieldPair pair : pairs)
- setDeclaredValue(clazz, instance, pair);
- }
-
- public static void setDeclaredValues(String className, PackageType type, Object instance, FieldPair... pairs) throws Exception {
- setDeclaredValues(getClass(className, type), instance, pairs);
- }
-
- public static void setDeclaredValues(String className, SubPackageType type, Object instance, FieldPair... pairs) throws Exception {
- setDeclaredValues(getClass(className, type), instance, pairs);
- }
-
- public enum DataType {
- BYTE(byte.class, Byte.class),
- SHORT(short.class, Short.class),
- INTEGER(int.class, Integer.class),
- LONG(long.class, Long.class),
- CHARACTER(char.class, Character.class),
- FLOAT(float.class, Float.class),
- DOUBLE(double.class, Double.class),
- BOOLEAN(boolean.class, Boolean.class);
-
- private static final Map, DataType> CLASS_MAP = new HashMap, DataType>();
- private final Class> primitive;
- private final Class> reference;
-
- static {
- for (DataType t : values()) {
- CLASS_MAP.put(t.primitive, t);
- CLASS_MAP.put(t.reference, t);
- }
- }
-
- private DataType(Class> primitive, Class> reference) {
- this.primitive = primitive;
- this.reference = reference;
- }
-
- public Class> getPrimitive() {
- return this.primitive;
- }
-
- public Class> getReference() {
- return this.reference;
- }
-
- public static DataType fromClass(Class> c) {
- return CLASS_MAP.get(c);
- }
-
- public static Class> getPrimitive(Class> c) {
- DataType t = fromClass(c);
- return t == null ? c : t.getPrimitive();
- }
-
- public static Class> getReference(Class> c) {
- DataType t = fromClass(c);
- return t == null ? c : t.getReference();
- }
-
- public static Class>[] convertToPrimitive(Class>[] classes) {
- int length = classes == null ? 0 : classes.length;
- Class>[] types = new Class>[length];
- for (int i = 0; i < length; i++)
- types[i] = getPrimitive(classes[i]);
- return types;
- }
-
- public static Class>[] convertToPrimitive(Object[] objects) {
- int length = objects == null ? 0 : objects.length;
- Class>[] types = new Class>[length];
- for (int i = 0; i < length; i++)
- types[i] = getPrimitive(objects[i].getClass());
- return types;
- }
-
- public static boolean equalsArray(Class>[] a1, Class>[] a2) {
- if (a1 == null || a2 == null || a1.length != a2.length)
- return false;
- for (int i = 0; i < a1.length; i++)
- if (!a1[i].equals(a2[i]) && !a1[i].isAssignableFrom(a2[i]))
- return false;
- return true;
- }
- }
-
- public final class FieldPair {
- private final String name;
- private final Object value;
-
- public FieldPair(String name, Object value) {
- this.name = name;
- this.value = value;
- }
-
- public String getName() {
- return this.name;
- }
-
- public Object getValue() {
- return this.value;
- }
- }
-
- public enum PackageType {
- MINECRAFT_SERVER("net.minecraft.server." + Bukkit.getServer().getClass().getPackage().getName().substring(23)),
- CRAFTBUKKIT(Bukkit.getServer().getClass().getPackage().getName());
-
- private final String name;
-
- private PackageType(String name) {
- this.name = name;
- }
-
- public String getName() {
- return this.name;
- }
-
- @Override
- public String toString() {
- return name;
- }
- }
-
- public enum SubPackageType {
- BLOCK,
- CHUNKIO,
- COMMAND,
- CONVERSATIONS,
- ENCHANTMENS,
- ENTITY,
- EVENT,
- GENERATOR,
- HELP,
- INVENTORY,
- MAP,
- METADATA,
- POTION,
- PROJECTILES,
- SCHEDULER,
- SCOREBOARD,
- UPDATER,
- UTIL;
-
- private final String name;
-
- private SubPackageType() {
- name = PackageType.CRAFTBUKKIT + "." + name().toLowerCase();
- }
-
- public String getName() {
- return this.name;
- }
-
- @Override
- public String toString() {
- return name;
- }
- }
-
- public enum PacketType {
- HANDSHAKING_IN_SET_PROTOCOL("PacketHandshakingInSetProtocol"),
- LOGIN_IN_ENCRYPTION_BEGIN("PacketLoginInEncryptionBegin"),
- LOGIN_IN_START("PacketLoginInStart"),
- LOGIN_OUT_DISCONNECT("PacketLoginOutDisconnect"),
- LOGIN_OUT_ENCRYPTION_BEGIN("PacketLoginOutEncryptionBegin"),
- LOGIN_OUT_SUCCESS("PacketLoginOutSuccess"),
- PLAY_IN_ABILITIES("PacketPlayInAbilities"),
- PLAY_IN_ARM_ANIMATION("PacketPlayInArmAnimation"),
- PLAY_IN_BLOCK_DIG("PacketPlayInBlockDig"),
- PLAY_IN_BLOCK_PLACE("PacketPlayInBlockPlace"),
- PLAY_IN_CHAT("PacketPlayInChat"),
- PLAY_IN_CLIENT_COMMAND("PacketPlayInClientCommand"),
- PLAY_IN_CLOSE_WINDOW("PacketPlayInCloseWindow"),
- PLAY_IN_CUSTOM_PAYLOAD("PacketPlayInCustomPayload"),
- PLAY_IN_ENCHANT_ITEM("PacketPlayInEnchantItem"),
- PLAY_IN_ENTITY_ACTION("PacketPlayInEntityAction"),
- PLAY_IN_FLYING("PacketPlayInFlying"),
- PLAY_IN_HELD_ITEM_SLOT("PacketPlayInHeldItemSlot"),
- PLAY_IN_KEEP_ALIVE("PacketPlayInKeepAlive"),
- PLAY_IN_LOOK("PacketPlayInLook"),
- PLAY_IN_POSITION("PacketPlayInPosition"),
- PLAY_IN_POSITION_LOOK("PacketPlayInPositionLook"),
- PLAY_IN_SET_CREATIVE_SLOT("PacketPlayInSetCreativeSlot "),
- PLAY_IN_SETTINGS("PacketPlayInSettings"),
- PLAY_IN_STEER_VEHICLE("PacketPlayInSteerVehicle"),
- PLAY_IN_TAB_COMPLETE("PacketPlayInTabComplete"),
- PLAY_IN_TRANSACTION("PacketPlayInTransaction"),
- PLAY_IN_UPDATE_SIGN("PacketPlayInUpdateSign"),
- PLAY_IN_USE_ENTITY("PacketPlayInUseEntity"),
- PLAY_IN_WINDOW_CLICK("PacketPlayInWindowClick"),
- PLAY_OUT_ABILITIES("PacketPlayOutAbilities"),
- PLAY_OUT_ANIMATION("PacketPlayOutAnimation"),
- PLAY_OUT_ATTACH_ENTITY("PacketPlayOutAttachEntity"),
- PLAY_OUT_BED("PacketPlayOutBed"),
- PLAY_OUT_BLOCK_ACTION("PacketPlayOutBlockAction"),
- PLAY_OUT_BLOCK_BREAK_ANIMATION("PacketPlayOutBlockBreakAnimation"),
- PLAY_OUT_BLOCK_CHANGE("PacketPlayOutBlockChange"),
- PLAY_OUT_CHAT("PacketPlayOutChat"),
- PLAY_OUT_CLOSE_WINDOW("PacketPlayOutCloseWindow"),
- PLAY_OUT_COLLECT("PacketPlayOutCollect"),
- PLAY_OUT_CRAFT_PROGRESS_BAR("PacketPlayOutCraftProgressBar"),
- PLAY_OUT_CUSTOM_PAYLOAD("PacketPlayOutCustomPayload"),
- PLAY_OUT_ENTITY("PacketPlayOutEntity"),
- PLAY_OUT_ENTITY_DESTROY("PacketPlayOutEntityDestroy"),
- PLAY_OUT_ENTITY_EFFECT("PacketPlayOutEntityEffect"),
- PLAY_OUT_ENTITY_EQUIPMENT("PacketPlayOutEntityEquipment"),
- PLAY_OUT_ENTITY_HEAD_ROTATION("PacketPlayOutEntityHeadRotation"),
- PLAY_OUT_ENTITY_LOOK("PacketPlayOutEntityLook"),
- PLAY_OUT_ENTITY_METADATA("PacketPlayOutEntityMetadata"),
- PLAY_OUT_ENTITY_STATUS("PacketPlayOutEntityStatus"),
- PLAY_OUT_ENTITY_TELEPORT("PacketPlayOutEntityTeleport"),
- PLAY_OUT_ENTITY_VELOCITY("PacketPlayOutEntityVelocity"),
- PLAY_OUT_EXPERIENCE("PacketPlayOutExperience"),
- PLAY_OUT_EXPLOSION("PacketPlayOutExplosion"),
- PLAY_OUT_GAME_STATE_CHANGE("PacketPlayOutGameStateChange"),
- PLAY_OUT_HELD_ITEM_SLOT("PacketPlayOutHeldItemSlot"),
- PLAY_OUT_KEEP_ALIVE("PacketPlayOutKeepAlive"),
- PLAY_OUT_KICK_DISCONNECT("PacketPlayOutKickDisconnect"),
- PLAY_OUT_LOGIN("PacketPlayOutLogin"),
- PLAY_OUT_MAP("PacketPlayOutMap"),
- PLAY_OUT_MAP_CHUNK("PacketPlayOutMapChunk"),
- PLAY_OUT_MAP_CHUNK_BULK("PacketPlayOutMapChunkBulk"),
- PLAY_OUT_MULTI_BLOCK_CHANGE("PacketPlayOutMultiBlockChange"),
- PLAY_OUT_NAMED_ENTITY_SPAWN("PacketPlayOutNamedEntitySpawn"),
- PLAY_OUT_NAMED_SOUND_EFFECT("PacketPlayOutNamedSoundEffect"),
- PLAY_OUT_OPEN_SIGN_EDITOR("PacketPlayOutOpenSignEditor"),
- PLAY_OUT_OPEN_WINDOW("PacketPlayOutOpenWindow"),
- PLAY_OUT_PLAYER_INFO("PacketPlayOutPlayerInfo"),
- PLAY_OUT_POSITION("PacketPlayOutPosition"),
- PLAY_OUT_REL_ENTITY_MOVE("PacketPlayOutRelEntityMove"),
- PLAY_OUT_REL_ENTITY_MOVE_LOOK("PacketPlayOutRelEntityMoveLook"),
- PLAY_OUT_REMOVE_ENTITY_EFFECT("PacketPlayOutRemoveEntityEffect"),
- PLAY_OUT_RESPAWN("PacketPlayOutRespawn"),
- PLAY_OUT_SCOREBOARD_DISPLAY_OBJECTIVE("PacketPlayOutScoreboardDisplayObjective"),
- PLAY_OUT_SCOREBOARD_OBJECTIVE("PacketPlayOutScoreboardObjective"),
- PLAY_OUT_SCOREBOARD_SCORE("PacketPlayOutScoreboardScore"),
- PLAY_OUT_SCOREBOARD_TEAM("PacketPlayOutScoreboardTeam"),
- PLAY_OUT_SET_SLOT("PacketPlayOutSetSlot"),
- PLAY_OUT_SPAWN_ENTITY("PacketPlayOutSpawnEntity"),
- PLAY_OUT_SPAWN_ENTITY_EXPERIENCE_ORB("PacketPlayOutSpawnEntityExperienceOrb"),
- PLAY_OUT_SPAWN_ENTITY_LIVING("PacketPlayOutSpawnEntityLiving"),
- PLAY_OUT_SPAWN_ENTITY_PAINTING("PacketPlayOutSpawnEntityPainting"),
- PLAY_OUT_SPAWN_ENTITY_WEATHER("PacketPlayOutSpawnEntityWeather"),
- PLAY_OUT_SPAWN_POSITION("PacketPlayOutSpawnPosition"),
- PLAY_OUT_STATISTIC("PacketPlayOutStatistic"),
- PLAY_OUT_TAB_COMPLETE("PacketPlayOutTabComplete"),
- PLAY_OUT_TILE_ENTITY_DATA("PacketPlayOutTileEntityData"),
- PLAY_OUT_TRANSACTION("PacketPlayOutTransaction"),
- PLAY_OUT_UPDATE_ATTRIBUTES("PacketPlayOutUpdateAttributes"),
- PLAY_OUT_UPDATE_HEALTH("PacketPlayOutUpdateHealth"),
- PLAY_OUT_UPDATE_SIGN("PacketPlayOutUpdateSign"),
- PLAY_OUT_UPDATE_TIME("PacketPlayOutUpdateTime"),
- PLAY_OUT_WINDOW_ITEMS("PacketPlayOutWindowItems"),
- PLAY_OUT_WORLD_EVENT("PacketPlayOutWorldEvent"),
- PLAY_OUT_WORLD_PARTICLES("PacketPlayOutWorldParticles"),
- STATUS_IN_PING("PacketStatusInPing"),
- STATUS_IN_START("PacketStatusInStart"),
- STATUS_OUT_PONG("PacketStatusOutPong"),
- STATUS_OUT_SERVER_INFO("PacketStatusOutServerInfo");
-
- private final String name;
- private Class> packet;
-
- private PacketType(String name) {
- this.name = name;
- }
-
- public String getName() {
- return this.getName();
- }
-
- public Class> getPacket() throws Exception {
- return packet == null ? packet = ReflectionUtil.getClass(name, PackageType.MINECRAFT_SERVER) : packet;
- }
- }
-}
\ No newline at end of file
diff --git a/src/main/java/com/lishid/openinv/OpenInv.java b/src/main/java/com/lishid/openinv/OpenInv.java
new file mode 100644
index 0000000..aaea98c
--- /dev/null
+++ b/src/main/java/com/lishid/openinv/OpenInv.java
@@ -0,0 +1,220 @@
+/*
+ * Copyright (C) 2011-2014 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 .
+ */
+
+package com.lishid.openinv;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.bukkit.ChatColor;
+import org.bukkit.OfflinePlayer;
+import org.bukkit.configuration.file.FileConfiguration;
+import org.bukkit.entity.Player;
+import org.bukkit.permissions.Permissible;
+import org.bukkit.plugin.PluginManager;
+import org.bukkit.plugin.java.JavaPlugin;
+
+import com.lishid.openinv.commands.AnyChestPluginCommand;
+import com.lishid.openinv.commands.OpenEnderPluginCommand;
+import com.lishid.openinv.commands.OpenInvPluginCommand;
+import com.lishid.openinv.commands.SearchInvPluginCommand;
+import com.lishid.openinv.commands.SilentChestPluginCommand;
+import com.lishid.openinv.internal.IAnySilentChest;
+import com.lishid.openinv.internal.IInventoryAccess;
+import com.lishid.openinv.internal.IPlayerDataManager;
+import com.lishid.openinv.internal.ISpecialEnderChest;
+import com.lishid.openinv.internal.ISpecialPlayerInventory;
+import com.lishid.openinv.internal.InternalAccessor;
+
+/**
+ * Open other player's inventory
+ *
+ * @author lishid
+ */
+public class OpenInv extends JavaPlugin {
+
+ private final Map inventories = new HashMap();
+ private final Map enderChests = new HashMap();
+
+ private InternalAccessor accessor;
+ private IPlayerDataManager playerLoader;
+ private IInventoryAccess inventoryAccess;
+ private IAnySilentChest anySilentChest;
+
+ @Override
+ public void onEnable() {
+ // Get plugin manager
+ PluginManager pm = getServer().getPluginManager();
+
+ accessor = new InternalAccessor(this);
+ // Version check
+ if (!accessor.initialize(getServer())) {
+ getLogger().info("Your version of CraftBukkit is not supported.");
+ getLogger().info("Please look for an updated version of OpenInv.");
+ pm.disablePlugin(this);
+ return;
+ }
+
+ playerLoader = accessor.newPlayerDataManager();
+ inventoryAccess = accessor.newInventoryAccess();
+ anySilentChest = accessor.newAnySilentChest();
+
+ FileConfiguration config = getConfig();
+ config.set("NotifySilentChest", config.getBoolean("NotifySilentChest", true));
+ config.set("NotifyAnyChest", config.getBoolean("NotifyAnyChest", true));
+ config.addDefault("NotifySilentChest", true);
+ config.addDefault("NotifyAnyChest", true);
+ config.options().copyDefaults(true);
+ saveConfig();
+
+ pm.registerEvents(new OpenInvPlayerListener(this), this);
+ pm.registerEvents(new OpenInvInventoryListener(this), this);
+
+ getCommand("openinv").setExecutor(new OpenInvPluginCommand(this));
+ getCommand("searchinv").setExecutor(new SearchInvPluginCommand());
+ getCommand("silentchest").setExecutor(new SilentChestPluginCommand(this));
+ getCommand("anychest").setExecutor(new AnyChestPluginCommand(this));
+ getCommand("openender").setExecutor(new OpenEnderPluginCommand(this));
+
+ }
+
+ public InternalAccessor getInternalAccessor() {
+ return this.accessor;
+ }
+
+ public IPlayerDataManager getPlayerLoader() {
+ return this.playerLoader;
+ }
+
+ public IInventoryAccess getInventoryAccess() {
+ return this.inventoryAccess;
+ }
+
+ public IAnySilentChest getAnySilentChest() {
+ return this.anySilentChest;
+ }
+
+ public ISpecialPlayerInventory getInventoryFor(Player player) {
+ String id = getPlayerLoader().getPlayerDataID(player);
+ if (inventories.containsKey(id)) {
+ return inventories.get(id);
+ }
+ return null;
+ }
+
+ public ISpecialPlayerInventory getOrCreateInventoryFor(Player player, boolean offline) {
+ String id = getPlayerLoader().getPlayerDataID(player);
+ if (inventories.containsKey(id)) {
+ return inventories.get(id);
+ }
+ ISpecialPlayerInventory inv = getInternalAccessor().newSpecialPlayerInventory(player, offline);
+ inventories.put(id, inv);
+ return inv;
+ }
+
+ public void removeLoadedInventory(Player player) {
+ String id = getPlayerLoader().getPlayerDataID(player);
+ if (inventories.containsKey(id)) {
+ inventories.remove(id);
+ }
+ }
+
+ public ISpecialEnderChest getEnderChestFor(Player player) {
+ String id = getPlayerLoader().getPlayerDataID(player);
+ if (enderChests.containsKey(id)) {
+ return enderChests.get(id);
+ }
+ return null;
+ }
+
+ public ISpecialEnderChest getOrCreateEnderChestFor(Player player, boolean offline) {
+ String id = getPlayerLoader().getPlayerDataID(player);
+ if (enderChests.containsKey(id)) {
+ return enderChests.get(id);
+ }
+ ISpecialEnderChest inv = getInternalAccessor().newSpecialEnderChest(player, offline);
+ enderChests.put(id, inv);
+ return inv;
+ }
+
+ public void removeLoadedEnderChest(Player player) {
+ String id = getPlayerLoader().getPlayerDataID(player);
+ if (enderChests.containsKey(id)) {
+ enderChests.remove(id);
+ }
+ }
+
+ public boolean notifySilentChest() {
+ return getConfig().getBoolean("NotifySilentChest", true);
+ }
+
+ public boolean notifyAnyChest() {
+ return getConfig().getBoolean("NotifyAnyChest", true);
+ }
+
+ public boolean getPlayerItemOpenInvStatus(OfflinePlayer player) {
+ return getConfig().getBoolean("ItemOpenInv." + getPlayerLoader().getPlayerDataID(player) + ".toggle", false);
+ }
+
+ public void setPlayerItemOpenInvStatus(OfflinePlayer player, boolean status) {
+ getConfig().set("ItemOpenInv." + getPlayerLoader().getPlayerDataID(player) + ".toggle", status);
+ saveConfig();
+ }
+
+ public boolean getPlayerSilentChestStatus(OfflinePlayer player) {
+ return getConfig().getBoolean("SilentChest." + getPlayerLoader().getPlayerDataID(player) + ".toggle", false);
+ }
+
+ public void setPlayerSilentChestStatus(OfflinePlayer player, boolean status) {
+ getConfig().set("SilentChest." + getPlayerLoader().getPlayerDataID(player) + ".toggle", status);
+ saveConfig();
+ }
+
+ public boolean getPlayerAnyChestStatus(OfflinePlayer player) {
+ return getConfig().getBoolean("AnyChest." + getPlayerLoader().getPlayerDataID(player) + ".toggle", true);
+ }
+
+ public void setPlayerAnyChestStatus(OfflinePlayer player, boolean status) {
+ getConfig().set("AnyChest." + getPlayerLoader().getPlayerDataID(player) + ".toggle", status);
+ saveConfig();
+ }
+
+ public static void ShowHelp(Player player) {
+ player.sendMessage(ChatColor.GREEN + "/openinv - Open a player's inventory");
+ player.sendMessage(ChatColor.GREEN + " (aliases: oi, inv, open)");
+ player.sendMessage(ChatColor.GREEN + "/openender - Open a player's enderchest");
+ player.sendMessage(ChatColor.GREEN + " (aliases: oe, enderchest)");
+ player.sendMessage(ChatColor.GREEN + "/searchinv
- [MinAmount] - ");
+ player.sendMessage(ChatColor.GREEN + " Search and list players having a specific item.");
+ player.sendMessage(ChatColor.GREEN + " (aliases: si, search)");
+ player.sendMessage(ChatColor.GREEN + "/anychest - Toggle anychest function");
+ player.sendMessage(ChatColor.GREEN + " (aliases: ac)");
+ player.sendMessage(ChatColor.GREEN + "/silentchest - Toggle silent chest function");
+ player.sendMessage(ChatColor.GREEN + " (aliases: sc, silent)");
+ }
+
+ public static boolean hasPermission(Permissible player, String permission) {
+ String[] parts = permission.split("\\.");
+ String perm = "";
+ for (int i = 0; i < parts.length; i++) {
+ if (player.hasPermission(perm + "*")) {
+ return true;
+ }
+ perm += parts[i] + ".";
+ }
+ return player.hasPermission(permission);
+ }
+}
\ No newline at end of file
diff --git a/src/com/lishid/openinv/OpenInvInventoryListener.java b/src/main/java/com/lishid/openinv/OpenInvInventoryListener.java
similarity index 79%
rename from src/com/lishid/openinv/OpenInvInventoryListener.java
rename to src/main/java/com/lishid/openinv/OpenInvInventoryListener.java
index c3a0a7c..5ff6ded 100644
--- a/src/com/lishid/openinv/OpenInvInventoryListener.java
+++ b/src/main/java/com/lishid/openinv/OpenInvInventoryListener.java
@@ -23,12 +23,19 @@ import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryDragEvent;
public class OpenInvInventoryListener implements Listener {
+
+ private final OpenInv plugin;
+
+ public OpenInvInventoryListener(OpenInv plugin) {
+ this.plugin = plugin;
+ }
+
@EventHandler(priority = EventPriority.NORMAL)
public void onInventoryClick(InventoryClickEvent event) {
// If this is the top inventory
// if (event.getView().convertSlot(event.getRawSlot()) == event.getRawSlot())
// {
- if (!OpenInv.inventoryAccess.check(event.getInventory(), event.getWhoClicked())) {
+ if (!plugin.getInventoryAccess().check(event.getInventory(), event.getWhoClicked())) {
event.setCancelled(true);
}
// }
@@ -36,7 +43,7 @@ public class OpenInvInventoryListener implements Listener {
@EventHandler(priority = EventPriority.NORMAL)
public void onInventoryDrag(InventoryDragEvent event) {
- if (!OpenInv.inventoryAccess.check(event.getInventory(), event.getWhoClicked())) {
+ if (!plugin.getInventoryAccess().check(event.getInventory(), event.getWhoClicked())) {
event.setCancelled(true);
}
}
diff --git a/src/com/lishid/openinv/OpenInvPlayerListener.java b/src/main/java/com/lishid/openinv/OpenInvPlayerListener.java
similarity index 65%
rename from src/com/lishid/openinv/OpenInvPlayerListener.java
rename to src/main/java/com/lishid/openinv/OpenInvPlayerListener.java
index 2026b6f..907caef 100644
--- a/src/com/lishid/openinv/OpenInvPlayerListener.java
+++ b/src/main/java/com/lishid/openinv/OpenInvPlayerListener.java
@@ -18,7 +18,6 @@ package com.lishid.openinv;
import org.bukkit.ChatColor;
import org.bukkit.block.Chest;
-import org.bukkit.block.Sign;
import org.bukkit.entity.Player;
import org.bukkit.event.Event.Result;
import org.bukkit.event.EventHandler;
@@ -33,30 +32,41 @@ import com.lishid.openinv.internal.ISpecialEnderChest;
import com.lishid.openinv.internal.ISpecialPlayerInventory;
public class OpenInvPlayerListener implements Listener {
+
+ private final OpenInv plugin;
+
+ public OpenInvPlayerListener(OpenInv plugin) {
+ this.plugin = plugin;
+ }
+
@EventHandler(priority = EventPriority.LOWEST)
public void onPlayerJoin(PlayerJoinEvent event) {
- ISpecialPlayerInventory inventory = OpenInv.inventories.get(event.getPlayer().getName().toLowerCase());
+ ISpecialPlayerInventory inventory = plugin.getInventoryFor(event.getPlayer());
if (inventory != null) {
- inventory.PlayerGoOnline(event.getPlayer());
+ inventory.setPlayerOnline(event.getPlayer());
}
- ISpecialEnderChest chest = OpenInv.enderChests.get(event.getPlayer().getName().toLowerCase());
+ ISpecialEnderChest chest = plugin.getEnderChestFor(event.getPlayer());
if (chest != null) {
- chest.PlayerGoOnline(event.getPlayer());
+ chest.setPlayerOnline(event.getPlayer());
}
}
@EventHandler(priority = EventPriority.MONITOR)
public void onPlayerQuit(PlayerQuitEvent event) {
- ISpecialPlayerInventory inventory = OpenInv.inventories.get(event.getPlayer().getName().toLowerCase());
+ ISpecialPlayerInventory inventory = plugin.getInventoryFor(event.getPlayer());
if (inventory != null) {
- inventory.PlayerGoOffline();
+ if (inventory.setPlayerOffline()) {
+ plugin.removeLoadedInventory(event.getPlayer());
+ }
}
- ISpecialEnderChest chest = OpenInv.enderChests.get(event.getPlayer().getName().toLowerCase());
+ ISpecialEnderChest chest = plugin.getEnderChestFor(event.getPlayer());
if (chest != null) {
- chest.PlayerGoOffline();
+ if (chest.setPlayerOffline()) {
+ plugin.removeLoadedEnderChest(event.getPlayer());
+ }
}
}
@@ -73,7 +83,7 @@ public class OpenInvPlayerListener implements Listener {
}
if (event.getAction() == Action.RIGHT_CLICK_BLOCK && event.getClickedBlock().getType() == org.bukkit.Material.ENDER_CHEST) {
- if (OpenInv.hasPermission(player, Permissions.PERM_SILENT) && OpenInv.GetPlayerSilentChestStatus(player.getName())) {
+ if (OpenInv.hasPermission(player, Permissions.PERM_SILENT) && plugin.getPlayerSilentChestStatus(player)) {
event.setCancelled(true);
player.openInventory(player.getEnderChest());
}
@@ -86,13 +96,13 @@ public class OpenInvPlayerListener implements Listener {
int y = event.getClickedBlock().getY();
int z = event.getClickedBlock().getZ();
- if (OpenInv.hasPermission(player, Permissions.PERM_SILENT) && OpenInv.GetPlayerSilentChestStatus(player.getName())) {
+ if (OpenInv.hasPermission(player, Permissions.PERM_SILENT) && plugin.getPlayerSilentChestStatus(player)) {
silentchest = true;
}
- if (OpenInv.hasPermission(player, Permissions.PERM_ANYCHEST) && OpenInv.GetPlayerAnyChestStatus(player.getName())) {
+ if (OpenInv.hasPermission(player, Permissions.PERM_ANYCHEST) && plugin.getPlayerAnyChestStatus(player)) {
try {
- anychest = OpenInv.anySilentChest.IsAnyChestNeeded(player, x, y, z);
+ anychest = plugin.getAnySilentChest().isAnyChestNeeded(player, x, y, z);
}
catch (Exception e) {
player.sendMessage(ChatColor.RED + "Error while executing openinv. Unsupported CraftBukkit.");
@@ -102,24 +112,17 @@ public class OpenInvPlayerListener implements Listener {
// If the anychest or silentchest is active
if (anychest || silentchest) {
- if (!OpenInv.anySilentChest.ActivateChest(player, anychest, silentchest, x, y, z)) {
+ if (!plugin.getAnySilentChest().activateChest(player, anychest, silentchest, x, y, z)) {
+ if (silentchest && plugin.notifySilentChest()) {
+ player.sendMessage("You are opening a chest silently.");
+ }
+ if (anychest && plugin.notifyAnyChest()) {
+ player.sendMessage("You are opening a blocked chest.");
+ }
event.setCancelled(true);
}
}
}
-
- if (event.getAction() == Action.RIGHT_CLICK_BLOCK && event.getClickedBlock().getState() instanceof Sign) {
- try {
- Sign sign = ((Sign) event.getClickedBlock().getState());
- if (OpenInv.hasPermission(player, Permissions.PERM_OPENINV) && sign.getLine(0).equalsIgnoreCase("[openinv]")) {
- String text = sign.getLine(1).trim() + sign.getLine(2).trim() + sign.getLine(3).trim();
- player.performCommand("openinv " + text);
- }
- }
- catch (Exception ex) {
- player.sendMessage("Internal Error.");
- ex.printStackTrace();
- }
- }
}
-}
\ No newline at end of file
+
+}
diff --git a/src/com/lishid/openinv/Permissions.java b/src/main/java/com/lishid/openinv/Permissions.java
similarity index 100%
rename from src/com/lishid/openinv/Permissions.java
rename to src/main/java/com/lishid/openinv/Permissions.java
diff --git a/src/com/lishid/openinv/commands/AnyChestPluginCommand.java b/src/main/java/com/lishid/openinv/commands/AnyChestPluginCommand.java
similarity index 81%
rename from src/com/lishid/openinv/commands/AnyChestPluginCommand.java
rename to src/main/java/com/lishid/openinv/commands/AnyChestPluginCommand.java
index a434666..57ec269 100644
--- a/src/com/lishid/openinv/commands/AnyChestPluginCommand.java
+++ b/src/main/java/com/lishid/openinv/commands/AnyChestPluginCommand.java
@@ -25,28 +25,32 @@ import org.bukkit.entity.Player;
import com.lishid.openinv.OpenInv;
public class AnyChestPluginCommand implements CommandExecutor {
- public AnyChestPluginCommand(OpenInv plugin) {
+ private final OpenInv plugin;
+
+ public AnyChestPluginCommand(OpenInv plugin) {
+ this.plugin = plugin;
}
- @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;
}
+ Player player = (Player) sender;
+
if (args.length > 0) {
if (args[0].equalsIgnoreCase("check")) {
- if (OpenInv.GetPlayerAnyChestStatus(sender.getName()))
+ if (plugin.getPlayerAnyChestStatus(player))
sender.sendMessage("AnyChest is ON.");
else
sender.sendMessage("AnyChest is OFF.");
}
}
- OpenInv.SetPlayerAnyChestStatus(sender.getName(), !OpenInv.GetPlayerAnyChestStatus(sender.getName()));
- sender.sendMessage("AnyChest is now " + (OpenInv.GetPlayerAnyChestStatus(sender.getName()) ? "On" : "Off") + ".");
+ plugin.setPlayerAnyChestStatus(player, !plugin.getPlayerAnyChestStatus(player));
+ sender.sendMessage("AnyChest is now " + (plugin.getPlayerAnyChestStatus(player) ? "On" : "Off") + ".");
return true;
}
diff --git a/src/com/lishid/openinv/commands/OpenEnderPluginCommand.java b/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java
similarity index 74%
rename from src/com/lishid/openinv/commands/OpenEnderPluginCommand.java
rename to src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java
index 5994112..2c0f3eb 100644
--- a/src/com/lishid/openinv/commands/OpenEnderPluginCommand.java
+++ b/src/main/java/com/lishid/openinv/commands/OpenEnderPluginCommand.java
@@ -18,7 +18,6 @@ package com.lishid.openinv.commands;
import java.util.HashMap;
import java.util.List;
-import java.util.UUID;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
@@ -32,7 +31,6 @@ import org.bukkit.scheduler.BukkitRunnable;
import com.lishid.openinv.OpenInv;
import com.lishid.openinv.Permissions;
import com.lishid.openinv.internal.ISpecialEnderChest;
-import com.lishid.openinv.internal.InternalAccessor;
public class OpenEnderPluginCommand implements CommandExecutor {
private final OpenInv plugin;
@@ -42,7 +40,6 @@ public class OpenEnderPluginCommand implements CommandExecutor {
this.plugin = plugin;
}
- @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.");
@@ -74,17 +71,16 @@ public class OpenEnderPluginCommand implements CommandExecutor {
name = args[0];
}
- final UUID senderID = player.getUniqueId();
new BukkitRunnable() {
- @Override
public void run() {
List matches = Bukkit.matchPlayer(name);
+ final OfflinePlayer offlinePlayer;
if (!matches.isEmpty()) {
- openInventory(player, matches.get(0).getUniqueId());
- return;
+ offlinePlayer = matches.get(0);
+ } else {
+ offlinePlayer = Bukkit.getOfflinePlayer(name);
}
- final OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(name);
- if (Bukkit.getPlayer(senderID) == null) {
+ if (!player.isOnline()) {
return;
}
if (offlinePlayer == null || !offlinePlayer.hasPlayedBefore()) {
@@ -92,12 +88,11 @@ public class OpenEnderPluginCommand implements CommandExecutor {
return;
}
new BukkitRunnable() {
- @Override
public void run() {
- if (Bukkit.getPlayer(senderID) == null) {
+ if (!player.isOnline()) {
return;
}
- openInventory(player, offlinePlayer.getUniqueId());
+ openInventory(player, offlinePlayer);
}
}.runTask(plugin);
}
@@ -106,34 +101,32 @@ public class OpenEnderPluginCommand implements CommandExecutor {
return true;
}
- private void openInventory(Player player, UUID uuid) {
+ private void openInventory(Player player, OfflinePlayer target) {
- Player target = this.plugin.getServer().getPlayer(uuid);
-
- if (target == null) {
+ Player onlineTarget;
+ if (!target.isOnline()) {
// Try loading the player's data
- target = OpenInv.playerLoader.loadPlayer(uuid);
+ onlineTarget = plugin.getPlayerLoader().loadPlayer(target);
- if (target == null) {
+ if (onlineTarget == null) {
player.sendMessage(ChatColor.RED + "Player not found!");
return;
}
+ } else {
+ onlineTarget = target.getPlayer();
}
- if (target != player && !OpenInv.hasPermission(player, Permissions.PERM_ENDERCHEST_ALL)) {
+ if (!onlineTarget.equals(player) && !OpenInv.hasPermission(player, Permissions.PERM_ENDERCHEST_ALL)) {
player.sendMessage(ChatColor.RED + "You do not have permission to access other player's enderchest");
return;
}
// Record the target
- openEnderHistory.put(player, target.getName());
+ openEnderHistory.put(player, onlineTarget.getName());
// Create the inventory
- ISpecialEnderChest chest = OpenInv.enderChests.get(target.getName().toLowerCase());
- if (chest == null) {
- chest = InternalAccessor.Instance.newSpecialEnderChest(target, !target.isOnline());
- }
+ ISpecialEnderChest chest = plugin.getOrCreateEnderChestFor(onlineTarget, !target.isOnline());
// Open the inventory
player.openInventory(chest.getBukkitInventory());
diff --git a/src/com/lishid/openinv/commands/OpenInvPluginCommand.java b/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java
similarity index 72%
rename from src/com/lishid/openinv/commands/OpenInvPluginCommand.java
rename to src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java
index b47c54a..edd1189 100644
--- a/src/com/lishid/openinv/commands/OpenInvPluginCommand.java
+++ b/src/main/java/com/lishid/openinv/commands/OpenInvPluginCommand.java
@@ -18,7 +18,6 @@ package com.lishid.openinv.commands;
import java.util.HashMap;
import java.util.List;
-import java.util.UUID;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
@@ -32,7 +31,6 @@ import org.bukkit.scheduler.BukkitRunnable;
import com.lishid.openinv.OpenInv;
import com.lishid.openinv.Permissions;
import com.lishid.openinv.internal.ISpecialPlayerInventory;
-import com.lishid.openinv.internal.InternalAccessor;
public class OpenInvPluginCommand implements CommandExecutor {
private final OpenInv plugin;
@@ -42,7 +40,6 @@ public class OpenInvPluginCommand implements CommandExecutor {
this.plugin = plugin;
}
- @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.");
@@ -74,17 +71,16 @@ public class OpenInvPluginCommand implements CommandExecutor {
name = args[0];
}
- final UUID senderID = player.getUniqueId();
new BukkitRunnable() {
- @Override
public void run() {
List matches = Bukkit.matchPlayer(name);
+ final OfflinePlayer offlinePlayer;
if (!matches.isEmpty()) {
- openInventory(player, matches.get(0).getUniqueId());
- return;
+ offlinePlayer = matches.get(0);
+ } else {
+ offlinePlayer = Bukkit.getOfflinePlayer(name);
}
- final OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(name);
- if (Bukkit.getPlayer(senderID) == null) {
+ if (!player.isOnline()) {
return;
}
if (offlinePlayer == null || !offlinePlayer.hasPlayedBefore()) {
@@ -92,12 +88,11 @@ public class OpenInvPluginCommand implements CommandExecutor {
return;
}
new BukkitRunnable() {
- @Override
public void run() {
- if (Bukkit.getPlayer(senderID) == null) {
+ if (!player.isOnline()) {
return;
}
- openInventory(player, offlinePlayer.getUniqueId());
+ openInventory(player, offlinePlayer);
}
}.runTask(plugin);
}
@@ -106,46 +101,46 @@ public class OpenInvPluginCommand implements CommandExecutor {
return true;
}
- private void openInventory(Player player, UUID uuid) {
+ private void openInventory(Player player, OfflinePlayer target) {
- Player target = this.plugin.getServer().getPlayer(uuid);
- if (target == null) {
+ Player onlineTarget;
+
+ if (!target.isOnline()) {
// Try loading the player's data
- target = OpenInv.playerLoader.loadPlayer(uuid);
+ onlineTarget = plugin.getPlayerLoader().loadPlayer(target);
- if (target == null) {
+ if (onlineTarget == null) {
player.sendMessage(ChatColor.RED + "Player not found!");
return;
}
+ } else {
+ onlineTarget = target.getPlayer();
}
// Permissions checks
- if (!OpenInv.hasPermission(player, Permissions.PERM_OVERRIDE) && OpenInv.hasPermission(target, Permissions.PERM_EXEMPT)) {
- player.sendMessage(ChatColor.RED + target.getDisplayName() + "'s inventory is protected!");
+ if (!OpenInv.hasPermission(player, Permissions.PERM_OVERRIDE) && OpenInv.hasPermission(onlineTarget, Permissions.PERM_EXEMPT)) {
+ player.sendMessage(ChatColor.RED + onlineTarget.getDisplayName() + "'s inventory is protected!");
return;
}
// Crosswork check
- if ((!OpenInv.hasPermission(player, Permissions.PERM_CROSSWORLD) && !OpenInv.hasPermission(player, Permissions.PERM_OVERRIDE)) && target.getWorld() != player.getWorld()) {
- player.sendMessage(ChatColor.RED + target.getDisplayName() + " is not in your world!");
+ if ((!OpenInv.hasPermission(player, Permissions.PERM_CROSSWORLD) && !OpenInv.hasPermission(player, Permissions.PERM_OVERRIDE)) && onlineTarget.getWorld() != player.getWorld()) {
+ player.sendMessage(ChatColor.RED + onlineTarget.getDisplayName() + " is not in your world!");
return;
}
// Self-open check
- if (!OpenInv.hasPermission(player, Permissions.PERM_OPENSELF) && target.equals(player)) {
+ if (!OpenInv.hasPermission(player, Permissions.PERM_OPENSELF) && onlineTarget.equals(player)) {
player.sendMessage(ChatColor.RED + "You're not allowed to openinv yourself.");
return;
}
// Record the target
- openInvHistory.put(player, target.getName());
+ openInvHistory.put(player, onlineTarget.getName());
// Create the inventory
- ISpecialPlayerInventory inv = OpenInv.inventories.get(target.getName().toLowerCase());
- if (inv == null) {
- inv = InternalAccessor.Instance.newSpecialPlayerInventory(target, !target.isOnline());
- }
+ ISpecialPlayerInventory inv = plugin.getOrCreateInventoryFor(onlineTarget, !target.isOnline());
// Open the inventory
player.openInventory(inv.getBukkitInventory());
diff --git a/src/com/lishid/openinv/commands/SearchInvPluginCommand.java b/src/main/java/com/lishid/openinv/commands/SearchInvPluginCommand.java
similarity index 99%
rename from src/com/lishid/openinv/commands/SearchInvPluginCommand.java
rename to src/main/java/com/lishid/openinv/commands/SearchInvPluginCommand.java
index d390ab7..5140d3f 100644
--- a/src/com/lishid/openinv/commands/SearchInvPluginCommand.java
+++ b/src/main/java/com/lishid/openinv/commands/SearchInvPluginCommand.java
@@ -29,7 +29,6 @@ public class SearchInvPluginCommand implements CommandExecutor {
}
- @Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
String PlayerList = "";
diff --git a/src/com/lishid/openinv/commands/SilentChestPluginCommand.java b/src/main/java/com/lishid/openinv/commands/SilentChestPluginCommand.java
similarity index 80%
rename from src/com/lishid/openinv/commands/SilentChestPluginCommand.java
rename to src/main/java/com/lishid/openinv/commands/SilentChestPluginCommand.java
index 992dce7..f363a96 100644
--- a/src/com/lishid/openinv/commands/SilentChestPluginCommand.java
+++ b/src/main/java/com/lishid/openinv/commands/SilentChestPluginCommand.java
@@ -25,28 +25,32 @@ import org.bukkit.entity.Player;
import com.lishid.openinv.OpenInv;
public class SilentChestPluginCommand implements CommandExecutor {
- public SilentChestPluginCommand(OpenInv plugin) {
+ private final OpenInv plugin;
+
+ public SilentChestPluginCommand(OpenInv plugin) {
+ this.plugin = plugin;
}
- @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;
}
+ Player player = (Player) sender;
+
if (args.length > 0) {
if (args[0].equalsIgnoreCase("check")) {
- if (OpenInv.GetPlayerSilentChestStatus(sender.getName()))
+ if (plugin.getPlayerSilentChestStatus(player))
sender.sendMessage("SilentChest is ON.");
else
sender.sendMessage("SilentChest is OFF.");
}
}
- OpenInv.SetPlayerSilentChestStatus(sender.getName(), !OpenInv.GetPlayerSilentChestStatus(sender.getName()));
- sender.sendMessage("SilentChest is now " + (OpenInv.GetPlayerSilentChestStatus(sender.getName()) ? "On" : "Off") + ".");
+ plugin.setPlayerSilentChestStatus(player, !plugin.getPlayerSilentChestStatus(player));
+ sender.sendMessage("SilentChest is now " + (plugin.getPlayerSilentChestStatus(player) ? "On" : "Off") + ".");
return true;
}
diff --git a/src/com/lishid/openinv/internal/IAnySilentChest.java b/src/main/java/com/lishid/openinv/internal/IAnySilentChest.java
similarity index 78%
rename from src/com/lishid/openinv/internal/IAnySilentChest.java
rename to src/main/java/com/lishid/openinv/internal/IAnySilentChest.java
index 7177763..5aac422 100644
--- a/src/com/lishid/openinv/internal/IAnySilentChest.java
+++ b/src/main/java/com/lishid/openinv/internal/IAnySilentChest.java
@@ -19,7 +19,7 @@ package com.lishid.openinv.internal;
import org.bukkit.entity.Player;
public interface IAnySilentChest {
- public boolean IsAnyChestNeeded(Player p, int x, int y, int z);
+ public boolean isAnyChestNeeded(Player player, int x, int y, int z);
- public boolean ActivateChest(Player p, boolean anychest, boolean silentchest, int x, int y, int z);
+ public boolean activateChest(Player player, boolean anychest, boolean silentchest, int x, int y, int z);
}
diff --git a/src/com/lishid/openinv/internal/IInventoryAccess.java b/src/main/java/com/lishid/openinv/internal/IInventoryAccess.java
similarity index 100%
rename from src/com/lishid/openinv/internal/IInventoryAccess.java
rename to src/main/java/com/lishid/openinv/internal/IInventoryAccess.java
diff --git a/src/com/lishid/openinv/internal/IPlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java
similarity index 81%
rename from src/com/lishid/openinv/internal/IPlayerDataManager.java
rename to src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java
index ec2af50..b1aaf4b 100644
--- a/src/com/lishid/openinv/internal/IPlayerDataManager.java
+++ b/src/main/java/com/lishid/openinv/internal/IPlayerDataManager.java
@@ -16,11 +16,11 @@
package com.lishid.openinv.internal;
-import java.util.UUID;
-
+import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;
public interface IPlayerDataManager {
- public Player loadPlayer(String name);
- public Player loadPlayer(UUID uuid);
+ public Player loadPlayer(OfflinePlayer offline);
+
+ public String getPlayerDataID(OfflinePlayer player);
}
diff --git a/src/com/lishid/openinv/internal/ISpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java
similarity index 72%
rename from src/com/lishid/openinv/internal/ISpecialEnderChest.java
rename to src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java
index 3ff8218..56c7e99 100644
--- a/src/com/lishid/openinv/internal/ISpecialEnderChest.java
+++ b/src/main/java/com/lishid/openinv/internal/ISpecialEnderChest.java
@@ -20,12 +20,18 @@ import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
public interface ISpecialEnderChest {
+
public Inventory getBukkitInventory();
- public void InventoryRemovalCheck();
+ public boolean inventoryRemovalCheck();
- public void PlayerGoOnline(Player p);
+ public void setPlayerOnline(Player p);
- public void PlayerGoOffline();
+ /**
+ * Sets the Player associated with this ISpecialEnderChest offline.
+ *
+ * @return true if the ISpecialEnderChest is eligible for removal
+ */
+ public boolean setPlayerOffline();
}
diff --git a/src/com/lishid/openinv/internal/ISpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/ISpecialPlayerInventory.java
similarity index 71%
rename from src/com/lishid/openinv/internal/ISpecialPlayerInventory.java
rename to src/main/java/com/lishid/openinv/internal/ISpecialPlayerInventory.java
index da4fc7b..a0e7281 100644
--- a/src/com/lishid/openinv/internal/ISpecialPlayerInventory.java
+++ b/src/main/java/com/lishid/openinv/internal/ISpecialPlayerInventory.java
@@ -20,11 +20,17 @@ import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
public interface ISpecialPlayerInventory {
+
public Inventory getBukkitInventory();
- public void InventoryRemovalCheck();
+ public boolean inventoryRemovalCheck();
- public void PlayerGoOnline(Player p);
+ public void setPlayerOnline(Player player);
- public void PlayerGoOffline();
+ /**
+ * Sets the Player associated with this ISpecialPlayerInventory offline.
+ *
+ * @return true if the ISpecialPlayerInventory is eligible for removal
+ */
+ public boolean setPlayerOffline();
}
diff --git a/src/com/lishid/openinv/internal/InternalAccessor.java b/src/main/java/com/lishid/openinv/internal/InternalAccessor.java
similarity index 74%
rename from src/com/lishid/openinv/internal/InternalAccessor.java
rename to src/main/java/com/lishid/openinv/internal/InternalAccessor.java
index b8b406c..1c89505 100644
--- a/src/com/lishid/openinv/internal/InternalAccessor.java
+++ b/src/main/java/com/lishid/openinv/internal/InternalAccessor.java
@@ -22,19 +22,28 @@ import org.bukkit.entity.Player;
import com.lishid.openinv.OpenInv;
public class InternalAccessor {
- public static InternalAccessor Instance;
+
+ private final OpenInv plugin;
+
private String version;
- /*
- * Returns false if version not supported
+ public InternalAccessor(OpenInv plugin) {
+ this.plugin = plugin;
+ }
+
+ /**
+ * Check if the current server version is supported, and, if it is, prepare to load version-specific code.
+ *
+ * @param server the Server
+ *
+ * @return true if supported
*/
- public static boolean Initialize(Server server) {
- Instance = new InternalAccessor();
+ public boolean initialize(Server server) {
String packageName = server.getClass().getPackage().getName();
- Instance.version = packageName.substring(packageName.lastIndexOf('.') + 1);
+ version = packageName.substring(packageName.lastIndexOf('.') + 1);
try {
- Class.forName("com.lishid.openinv.internal." + Instance.version + ".AnySilentChest");
+ Class.forName("com.lishid.openinv.internal." + version + ".AnySilentChest");
return true;
}
catch (Exception e) {
@@ -42,8 +51,8 @@ public class InternalAccessor {
}
}
- public void PrintError() {
- OpenInv.log("OpenInv encountered an error with the CraftBukkit version \"" + Instance.version + "\". Please look for an updated version of OpenInv.");
+ private void printErrorMessage() {
+ plugin.getLogger().warning("OpenInv encountered an error with the CraftBukkit version \"" + version + "\". Please look for an updated version of OpenInv.");
}
public IPlayerDataManager newPlayerDataManager() {
@@ -66,8 +75,8 @@ public class InternalAccessor {
}
}
catch (Exception e) {
- PrintError();
- OpenInv.log(e);
+ printErrorMessage();
+ e.printStackTrace();
}
return null;
@@ -81,8 +90,8 @@ public class InternalAccessor {
}
}
catch (Exception e) {
- PrintError();
- OpenInv.log(e);
+ printErrorMessage();
+ e.printStackTrace();
}
return null;
@@ -96,8 +105,8 @@ public class InternalAccessor {
}
}
catch (Exception e) {
- PrintError();
- OpenInv.log(e);
+ printErrorMessage();
+ e.printStackTrace();
}
return null;
diff --git a/src/com/lishid/openinv/internal/v1_9_R1/AnySilentChest.java b/src/main/java/com/lishid/openinv/internal/v1_9_R1/AnySilentChest.java
similarity index 93%
rename from src/com/lishid/openinv/internal/v1_9_R1/AnySilentChest.java
rename to src/main/java/com/lishid/openinv/internal/v1_9_R1/AnySilentChest.java
index ea73c6a..2d4e95e 100644
--- a/src/com/lishid/openinv/internal/v1_9_R1/AnySilentChest.java
+++ b/src/main/java/com/lishid/openinv/internal/v1_9_R1/AnySilentChest.java
@@ -19,7 +19,6 @@ package com.lishid.openinv.internal.v1_9_R1;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
-import com.lishid.openinv.OpenInv;
import com.lishid.openinv.internal.IAnySilentChest;
//Volatile
@@ -39,8 +38,7 @@ import net.minecraft.server.v1_9_R1.TileEntityChest;
import net.minecraft.server.v1_9_R1.World;
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
EntityPlayer player = ((CraftPlayer) p).getHandle();
World world = player.world;
@@ -88,8 +86,7 @@ public class AnySilentChest implements IAnySilentChest {
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();
World world = player.world;
Object chest = world.getTileEntity(new BlockPosition(x, y, z));
@@ -132,9 +129,6 @@ public class AnySilentChest implements IAnySilentChest {
player.activeContainer = silentContainerChest;
player.activeContainer.windowId = windowId;
player.activeContainer.addSlotListener(player);
- if (OpenInv.NotifySilentChest()) {
- p.sendMessage("You are opening a chest silently.");
- }
returnValue = false;
}
catch (Exception e) {
@@ -143,10 +137,6 @@ public class AnySilentChest implements IAnySilentChest {
}
}
- if (anychest && OpenInv.NotifyAnyChest()) {
- p.sendMessage("You are opening a blocked chest.");
- }
-
return returnValue;
}
}
diff --git a/src/com/lishid/openinv/internal/v1_9_R1/InventoryAccess.java b/src/main/java/com/lishid/openinv/internal/v1_9_R1/InventoryAccess.java
similarity index 97%
rename from src/com/lishid/openinv/internal/v1_9_R1/InventoryAccess.java
rename to src/main/java/com/lishid/openinv/internal/v1_9_R1/InventoryAccess.java
index dc9164d..9c23aa3 100644
--- a/src/com/lishid/openinv/internal/v1_9_R1/InventoryAccess.java
+++ b/src/main/java/com/lishid/openinv/internal/v1_9_R1/InventoryAccess.java
@@ -31,7 +31,6 @@ import org.bukkit.craftbukkit.v1_9_R1.inventory.CraftInventory;
import net.minecraft.server.v1_9_R1.IInventory;
public class InventoryAccess implements IInventoryAccess {
- @Override
public boolean check(Inventory inventory, HumanEntity player) {
IInventory inv = grabInventory(inventory);
@@ -65,7 +64,7 @@ public class InventoryAccess implements IInventoryAccess {
result = (IInventory) f.get(inventory);
}
catch (Exception e) {
- OpenInv.log(e);
+ e.printStackTrace();
}
}
}
diff --git a/src/main/java/com/lishid/openinv/internal/v1_9_R1/PlayerDataManager.java b/src/main/java/com/lishid/openinv/internal/v1_9_R1/PlayerDataManager.java
new file mode 100644
index 0000000..4a6673d
--- /dev/null
+++ b/src/main/java/com/lishid/openinv/internal/v1_9_R1/PlayerDataManager.java
@@ -0,0 +1,147 @@
+/*
+ * Copyright (C) 2011-2014 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 .
+ */
+
+package com.lishid.openinv.internal.v1_9_R1;
+
+import org.bukkit.Bukkit;
+import org.bukkit.OfflinePlayer;
+import org.bukkit.entity.Player;
+
+import com.lishid.openinv.internal.IPlayerDataManager;
+import com.mojang.authlib.GameProfile;
+
+//Volatile
+import org.bukkit.craftbukkit.v1_9_R1.CraftServer;
+
+import net.minecraft.server.v1_9_R1.EntityPlayer;
+import net.minecraft.server.v1_9_R1.MinecraftServer;
+import net.minecraft.server.v1_9_R1.PlayerInteractManager;
+
+public class PlayerDataManager implements IPlayerDataManager {
+// public Player loadPlayer(String name) {
+// try {
+// UUID uuid = matchUser(name);
+// if (uuid == null) {
+// return null;
+// }
+//
+// // Default player folder
+// File playerfolder = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "playerdata");
+// if (!playerfolder.exists()) {
+// return null;
+// }
+//
+// OfflinePlayer player = Bukkit.getOfflinePlayer(uuid);
+// if (player == null) {
+// return null;
+// }
+// GameProfile profile = new GameProfile(uuid, player.getName());
+// MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer();
+// // Create an entity to load the player data
+// EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), profile, new PlayerInteractManager(server.getWorldServer(0)));
+//
+// // Get the bukkit entity
+// Player target = (entity == null) ? null : entity.getBukkitEntity();
+// if (target != null) {
+// // Load data
+// target.loadData();
+// // Return the entity
+// return target;
+// }
+// }
+// catch (Exception e) {
+// e.printStackTrace();
+// }
+//
+// return null;
+// }
+//
+// private static UUID matchUser(String search) {
+// UUID found = null;
+//
+// String lowerSearch = search.toLowerCase();
+// int delta = 2147483647;
+//
+// OfflinePlayer[] offlinePlayers = Bukkit.getOfflinePlayers();
+// for (OfflinePlayer player : offlinePlayers) {
+// String name = player.getName();
+//
+// if (name == null){
+// continue;
+// }
+// if (name.equalsIgnoreCase(search)){
+// return player.getUniqueId();
+// }
+// if (name.toLowerCase().startsWith(lowerSearch)) {
+// int curDelta = name.length() - lowerSearch.length();
+// if (curDelta < delta) {
+// found = player.getUniqueId();
+// delta = curDelta;
+// }
+// if (curDelta == 0) {
+// break;
+// }
+// }
+// }
+//
+// return found;
+// }
+//
+// public Player loadPlayer(UUID uuid) {
+// OfflinePlayer player = Bukkit.getOfflinePlayer(uuid);
+// if (player == null || !player.hasPlayedBefore()) {
+// return null;
+// }
+// GameProfile profile = new GameProfile(uuid, player.getName());
+// MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer();
+// // Create an entity to load the player data
+// EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), profile, new PlayerInteractManager(server.getWorldServer(0)));
+//
+// // Get the bukkit entity
+// Player target = (entity == null) ? null : entity.getBukkitEntity();
+// if (target != null) {
+// // Load data
+// target.loadData();
+// // Return the entity
+// return target;
+// }
+// return null;
+// }
+
+ public Player loadPlayer(OfflinePlayer offline) {
+ if (offline == null || !offline.hasPlayedBefore()) {
+ return null;
+ }
+ GameProfile profile = new GameProfile(offline.getUniqueId(), offline.getName());
+ MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer();
+ // Create an entity to load the player data
+ EntityPlayer entity = new EntityPlayer(server, server.getWorldServer(0), profile, new PlayerInteractManager(server.getWorldServer(0)));
+
+ // Get the bukkit entity
+ Player target = (entity == null) ? null : entity.getBukkitEntity();
+ if (target != null) {
+ // Load data
+ target.loadData();
+ // Return the entity
+ return target;
+ }
+ return null;
+ }
+
+ public String getPlayerDataID(OfflinePlayer player) {
+ return player.getUniqueId().toString();
+ }
+}
diff --git a/src/com/lishid/openinv/internal/v1_9_R1/SilentContainerChest.java b/src/main/java/com/lishid/openinv/internal/v1_9_R1/SilentContainerChest.java
similarity index 100%
rename from src/com/lishid/openinv/internal/v1_9_R1/SilentContainerChest.java
rename to src/main/java/com/lishid/openinv/internal/v1_9_R1/SilentContainerChest.java
diff --git a/src/com/lishid/openinv/internal/v1_9_R1/SpecialEnderChest.java b/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialEnderChest.java
similarity index 89%
rename from src/com/lishid/openinv/internal/v1_9_R1/SpecialEnderChest.java
rename to src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialEnderChest.java
index 16239c2..62574ca 100644
--- a/src/com/lishid/openinv/internal/v1_9_R1/SpecialEnderChest.java
+++ b/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialEnderChest.java
@@ -25,7 +25,6 @@ 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;
//Volatile
@@ -53,24 +52,18 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento
this.enderChest = player.getHandle().getEnderChest();
this.owner = player;
this.items = enderChest.getContents();
- OpenInv.enderChests.put(owner.getName().toLowerCase(), this);
}
- @Override
public Inventory getBukkitInventory() {
return inventory;
}
- @Override
- public void InventoryRemovalCheck() {
+ public boolean inventoryRemovalCheck() {
owner.saveData();
- if (transaction.isEmpty() && !playerOnline) {
- OpenInv.enderChests.remove(owner.getName().toLowerCase());
- }
+ return transaction.isEmpty() && !playerOnline;
}
- @Override
- public void PlayerGoOnline(Player p) {
+ public void setPlayerOnline(Player p) {
if (!playerOnline) {
try {
InventoryEnderChest playerEnderChest = ((CraftPlayer) p).getHandle().getEnderChest();
@@ -84,9 +77,9 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento
}
}
- @Override
- public void PlayerGoOffline() {
+ public boolean setPlayerOffline() {
playerOnline = false;
+ return inventoryRemovalCheck();
}
@Override
@@ -102,7 +95,7 @@ public class SpecialEnderChest extends InventorySubcontainer implements IInvento
@Override
public void onClose(CraftHumanEntity who) {
transaction.remove(who);
- this.InventoryRemovalCheck();
+ this.inventoryRemovalCheck();
}
@Override
diff --git a/src/com/lishid/openinv/internal/v1_9_R1/SpecialPlayerInventory.java b/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialPlayerInventory.java
similarity index 92%
rename from src/com/lishid/openinv/internal/v1_9_R1/SpecialPlayerInventory.java
rename to src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialPlayerInventory.java
index 3316c58..a717285 100644
--- a/src/com/lishid/openinv/internal/v1_9_R1/SpecialPlayerInventory.java
+++ b/src/main/java/com/lishid/openinv/internal/v1_9_R1/SpecialPlayerInventory.java
@@ -22,7 +22,6 @@ import java.lang.reflect.Modifier;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
-import com.lishid.openinv.OpenInv;
import com.lishid.openinv.internal.ISpecialPlayerInventory;
//Volatile
@@ -45,7 +44,6 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP
this.owner = ((CraftPlayer) p);
this.playerOnline = online;
setItemArrays(this, player.inventory.items, player.inventory.armor, player.inventory.extraSlots);
- OpenInv.inventories.put(owner.getName().toLowerCase(), this);
}
private void setItemArrays(PlayerInventory inventory, ItemStack[] items, ItemStack[] armor,
@@ -61,28 +59,26 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP
field.set(inventory, armor);
field = inventory.getClass().getField("extraSlots");
modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL);
- } catch (NoSuchFieldException | SecurityException | IllegalArgumentException
- | IllegalAccessException e) {
+ } catch (NoSuchFieldException e) {
// Unable to set final fields to item arrays, we're screwed. Noisily fail.
e.printStackTrace();
+ } catch (IllegalArgumentException e) {
+ e.printStackTrace();
+ } catch (IllegalAccessException e) {
+ e.printStackTrace();
}
}
- @Override
public Inventory getBukkitInventory() {
return inventory;
}
- @Override
- public void InventoryRemovalCheck() {
+ public boolean inventoryRemovalCheck() {
owner.saveData();
- if (transaction.isEmpty() && !playerOnline) {
- OpenInv.inventories.remove(owner.getName().toLowerCase());
- }
+ return transaction.isEmpty() && !playerOnline;
}
- @Override
- public void PlayerGoOnline(Player player) {
+ public void setPlayerOnline(Player player) {
if (!playerOnline) {
CraftPlayer p = (CraftPlayer) player;
setItemArrays(p.getHandle().inventory, items, armor, extraSlots);
@@ -91,16 +87,15 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP
}
}
- @Override
- public void PlayerGoOffline() {
+ public boolean setPlayerOffline() {
playerOnline = false;
- this.InventoryRemovalCheck();
+ return this.inventoryRemovalCheck();
}
@Override
public void onClose(CraftHumanEntity who) {
super.onClose(who);
- this.InventoryRemovalCheck();
+ this.inventoryRemovalCheck();
}
@Override
diff --git a/src/plugin.yml b/src/main/resources/plugin.yml
similarity index 100%
rename from src/plugin.yml
rename to src/main/resources/plugin.yml